命名空间不能直接包含字段或方法之类的成员

时间:2019-06-10 18:02:38

标签: c# unity3d

我对团结和游戏开发以及编码还很陌生,今天才开始,而我只是想让我的玩家加入WALK,但我遇到了我的第一个问题,但我一直收到此错误消息,但是我的代码没有任何错误的迹象(在我看来,这对您来说可能很明显),但是我真的需要帮助

我尝试了许多不同的方法来重做它。我正在关注角色移动教程,但这是从2018年开始使用的Visual Studio代码的不同版本。

 public class PlayerMovement : MonoBehaviour {};

     public CharacterController2D controller;

这是链接https://www.youtube.com/watch?v=dwcT-Dch0bA&t=341s,我是一个非常新的人,因此,如果您可以将链接发送到一个有用的2D游戏设计教程,那将非常棒。

2 个答案:

答案 0 :(得分:6)

这应该消除您的错误

public class PlayerMovement : MonoBehaviour
{
    public CharacterController2D controller;
}

错误消息非常简单。您不能直接拥有方法或在命名空间内声明变量

可以,但是,在名称空间内有 ,而这些类可以直接 包含诸如字段或方法之类的成员。例如,您有一个名为PlayerMovement的类,并且正在继承MonoBehaviour

“什么是命名空间?” ,您问吗?

名称空间是类的位置 是cs文件中的第一个左括号。

这是一个易于理解的例子

namespace This.Is.My.Address
{
    public class House
    {
        private Room LivingRoom {get; set;}

        private Water Faucet()
        {
             //return Water or something
        }
    }
}

因此,在This.Is.My.Address命名空间中,有一所房子,而该房子中有一堆房子的东西。

您所做的就是这样(希望您能发现其中的区别):

namespace This.Is.My.Address
{
    public class House 
    {

    }

    private Room LivingRoom {get; set;}

    private Water Faucet()
    {
        //return Water() or something
    }
}

您的起居室等在街上和其他所有地方。希望对您有所帮助。

答案 1 :(得分:2)

C#是一种面向对象编程(OOP)类型的语言,顾名思义,它处理所谓的“对象”。通过使用“模板”创建对象,我们在OOP中称其为class

因此,定义类的方式如下:

public class MyClass
{
    // Stuff goes inside here
}

这些类位于我们称为namespace的内部,这有点像放置类的虚拟存储桶。并且这些名称空间允许包含类,但不允许出现错误提示的字段。

因此,这并不可行,因为该字段直接位于名称空间内:

namespace YourNamespace
{
     public class PlayerMovement : MonoBehaviour {};

     public CharacterController2D controller;
}

但是会这样,因为该字段在类内部:

namespace YourNamespace
{
    public class PlayerMovement : MonoBehaviour 
    {
        public CharacterController2D controller;
    }
}

您似乎是编程的超级新手,所以我建议您不要以Unity(有点先进)开始。您可能应该从简单的编程教程开始,并在进入大型项目之前尝试理解基本的编程概念。