2016-07-04 94 views
0

在Hololens中使用Unity 5.4 beta时,在命名空间中设置类会禁用某些UnityEngine功能。在Unity中使用命名空间隐藏功能

如果我声明一个类,它一切正常。如果我将它封装在名称空间中,类别之间不会看到对方,即使在相同的名称空间内或使用添加内容也是如此。

创建一个类MonoBehaviour,我可以将它拖放到一个游戏对象上,如果我将这个类封装在命名空间中,Unity抱怨它不是MB或它有问题,因此无法拖动它。

有没有人有类似的问题?从5.4开始报告错误之前,请先询问是否还在测试阶段。

+0

不知道 - 你尝试调用这个类像Namespace.MyClass? –

+0

你能向我们展示一个例子吗?我们在代码中广泛使用名称空间,并且没有这样的问题。你有没有可选的参数? – Bart

+0

明天我会在办公室里发布一些代码,但没有什么。我没有试过用明确的命名空间来调用,以防万一。 – Everts

回答

0

我设法弄清楚我在想什么。这是我有:

namespace Company.Hololens 
{ 
    public enum GazeState 
    { 
     None = -1, NoHit, Hit 
    } 
    public class CursorEventArg : EventArgs 
    { 

    } 
    public class CursorController : Singleton<CursorController> 
    { 
    } 
} 

和它似乎好像团结不喜欢类声明的顺序。将EventArg向下推到脚本的末尾,它会很好。

不知道这是否应该被视为一个错误,我从来没有见过任何类的声明顺序提及。在顶部声明一个接口是好的,但。

1

Classes因为您没有导入或通过它们的namespace访问它们,所以看不到对方。要访问命名空间中的任何内容,您必须importnamespace或调用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(); 
    } 
} 

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

+0

我碰巧做得很对。这在5.3中工作正常,我正在使用5.4(测试版)。如果它自己修复或者我做了错误的事情,我会在明天再次检查,但我尝试了很多方法,结果总是如果有一个在命名空间中,那么很好,如果两个类在不同的自定义命名空间中,那么问题就会发生。 – Everts

+0

@Everts我也使用5.4(测试版)。有用。当你回家时,Dude会发布你的代码。你可能搞砸了某个地方。 – Programmer