繁体   English   中英

C#和Unity出现使我感到困惑的错误

[英]C# and Unity getting errors that confuse me

我对此是全新的,并且对所输入的代码有一些难题。我遵循了教程,但仍然遇到一些问题。 我想要做的就是移动附着了此脚本的对象Player,该脚本是PlayerMovement。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour {

    public object Player(PlayerMovement) { // Identifier expected, and 'PlayerMovement.Player(PlayerMovement)' not all codes return a value
    {
        if (Input.GetKeyDown(KeyCode.W))
        {
            Transform.Translate(Vector3.forward * Time.deltaTime);  //ERROR: An object reference is required for the non-static field, method or property 'Transform.Translate(vector3)

            Debug.Log("W is pressed, and I should move forwards.");
        }

        if (Input.GetKeyDown(KeyCode.S))
        {
            Debug.Log("S is pressed, and I should move backwards.");
        }

        if (Input.GetKeyDown(KeyCode.A))
        {
            Debug.Log("A is pressed, and I should move left.");
        }

        if (Input.GetKeyDown(KeyCode.D))
        {
            Debug.Log("D is pressed, and I should move right.");
        }
    }
}

在第22行,我收到2个Identefier预期的错误,并且'PlayerMovement.Player(PlayerMovement)'并非所有代码都返回一个值。

在第29行上,我得到非静态字段,方法或属性'Transform.Translate(vector3)'的对象引用是必需的

由于我是崭新的,我一直在寻找答案,而且每个小时都在搜索,每当我在google上搜索到的任何内容都不能真正解释我在做什么的时候,或者只是阅读得不正确。

第22行的错误是由于Player函数的类型为object而导致的,您没有在该方法中返回任何对象。 如果您更换:

public object Player(PlayerMovement)

与:

public void Player(PlayerMovement)  

该错误应该消失,或者您可以返回一个对象,但是我不确定那会是什么。

首先,如精神鲤鱼所说。 程序将期望返回值,因此您应该返回一个值或将对象更改为void

public object Player....

变成一个

public void Player....

然后主要的问题是您正在调用Transform.Translate而不是更改gameObject的实际变换。 就像您说的那样,PlayerMovement脚本已附加在您的玩家游戏对象上,因此目标是使游戏对象发生变化,其变换取决于按键输入。 尝试调用转换本身而不是转换类。 transform是游戏对象的实际转换,而Transform是类,因此您在调用静态方法,请尝试使用this.transform.Translate

this.transform.Translate(Vector3.forward * Time.deltaTime);

然后最后一件事,请确保在Update方法中调用您的方法以使其起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM