2017-02-18 46 views
1

在脚本文件夹“警告类型应该命名空间AssembleCSharp内部声明”,在资产项下我试图定义一个简单的数据类:MonoDevelop的C#在Unity3D试图理解:

文件:TirggerObject.cs

using UnityEngine; 
public class TriggerObject { 
    public int TriggerID { get; set;} 
    public Vector2 Location { get; set;} 
    public float TriggerRadius { get; set;} 
} 

类的名字有一个与之相关的警告:

:“警告类型里面应该命名空间‘AssemblyCSharp’声明”据我可以告诉AssembleCSharp 所在班级 被定义为。我看到的唯一古怪的是,在MonoDvelop主UI解决方案文件树显示类文件:TriggerObject.cs作为大会“大会-CSHARP”之中。而警告消息称它为“AssemblyCSharp”,没有破折号。

我假设我可以用这个警告过因为代码似乎运行。但是,我对Unity的程序集找不到多少东西感到震惊,我无法找到这个确切的警告。我还没有找到为什么这是正确的尚未组装或如何,我可以把它在正确的组件中的任何明确的解释。

我讨厌不理解警告。

回答

1

这是因为你的文件在物理上是统一组件内,但这一事实并没有反映在你的代码。我担心这是Unity通过Unity编辑器创建脚本时的“糟糕的自动练习”。当您通过MonoDevelop创建新文件时,命名空间块将自动生成。

该问题的解决方案是命名块添加到您的文件:

namespace AssemblyCSharp { 

    using UnityEngine; 

    public class TriggerObject { 
     public int TriggerID { get; set;} 
     public Vector2 Location { get; set;} 
     public float TriggerRadius { get; set;} 
    } 
} 

实际上,你可以将“使用”的命名空间块内部或外部声明。 Read more about it here

请注意添加命名空间部分,以一个文件将迫使你修改所有的代码文件,这取决于(只是由于能见度类)。