2016-07-04 33 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

相關問題