在Unity中使用命名空间隐藏了功能

时间:2016-07-04 15:21:54

标签: c# unity3d namespaces

将Unity 5.4 beta与Hololens配合使用,在命名空间内设置类会禁用某些UnityEngine功能。

如果我宣布一个班级,一切正常。如果我将它包装在命名空间中,则类不会相互看到,即使在相同的命名空间内或使用using也是如此。

制作MonoBehaviour类,我可以将它拖放到游戏对象上,如果我将该类包装在命名空间内,Unity会抱怨它不是MB或它有问题所以它不能被拖动。

有没有人有类似的问题?在报告自5.4之后的错误之前,只需询问即可。但

2 个答案:

答案 0 :(得分:1)

Classes没有看到对方,因为您没有导入或通过namespace访问它们。要访问命名空间中的任何内容,您必须import namespace或调用namespace后跟class名称。请查看以下两个示例。

带命名空间的类:

namespace MyANameSpace
{
    public class A
    {

    }
}

要查看class A,您必须使用using关键字将其导入。

using MyANameSpace;
public class B : MonoBehaviour
{
    A a;

    // Use this for initialization
    void Start()
    {
        a = new A();
    }
}

另一种方法是直接通过namespace

访问它们
public class B : MonoBehaviour
{
    MyANameSpace.A a;

    // Use this for initialization
    void Start()
    {
        a = new MyANameSpace.A();
    }
}

如果这不能解决您的问题,那么您必须发布您的代码。这可能不是一个错误

答案 1 :(得分:0)

我设法弄清楚我认为发生了什么。这就是我所拥有的:

computeSymbolSizes()

似乎Unity不喜欢类声明的顺序。将EventArg推送到脚本的末尾,它就可以了。

不确定这是否应该被视为错误,我从未见过提及类声明顺序。尽管如此,在顶部声明一个接口是很好的。