【问题标题】:A namespace cannot directly contain members命名空间不能直接包含成员
【发布时间】:2020-05-26 08:33:11
【问题描述】:

我对统一和编码(特别是 c#)非常陌生,当我在移动时,我一直收到这个错误。我已经尝试研究和查看其他问题,但不确定该怎么做,所以如果你能帮助我,那将非常有帮助。 the errors in unityhere is the code

【问题讨论】:

  • 能否将您的代码发布为文本?
  • 删除“MonoBehaviour”后行中的右大括号并将其添加到最后一行。类为空,您在命名空间中添加了方法。
  • MonoBehavior 之后的 { } 正在打开和关闭您的类定义。随后,您键入的所有其他内容都直接位于不允许的名称空间中。将} 移动到Update()} 之后
  • 也作为对新会员的推荐,请不要在图片中发布代码,这会让人难以调试。请以正确格式将其复制/粘贴到您的问题中:)
  • 其实这不仅是一个建议,而且是代码发布为使用{ }按钮格式化的文本的规则

标签: c# unity3d


【解决方案1】:

您需要将代码封装在类中。

public class NewBehaviorScript : MonoBehaviour
{
   public float forwardForce = 2000f;
   ...etc
}

您可以在此处了解有关命名空间的更多信息https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/namespaces/

你的代码是这样的

public class NewBehaviorScript : MonoBehaviour
    { }
       public float forwardForce = 2000f;
       ...etc

在你的类之外是你的命名空间,这就是你的编译器抱怨的原因。

【讨论】:

    【解决方案2】:

    删除 Monobehavoir 之后的“}”并将其粘贴到脚本的末尾。您的代码应如下所示:


        public class NewBehaviorScript : MonoBehavior
        {
            private int myVariable = 1;
    
            private void myMethod()
            {
    
            }
        } 
    

    【讨论】:

      【解决方案3】:

      您在类之外添加了属性或字段。大概是误会了。例如

      namespace MyNamespace
      {
          //this is invalid because properties MUST be inside a class
          public string PropertyOne {get;set;}
      
          public class MyClass
          {
              public string PropertyTwo {get;set;}
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-06
        相关资源
        最近更新 更多