2016-07-04 7 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> 
    { 
    } 
} 

そして、Unityがクラス宣言の順番を気に入らないようです。 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(); 
    } 
} 

もう1つの方法は、namespaceで直接アクセスする方法です。

public class B : MonoBehaviour 
{ 
    MyANameSpace.A a; 

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

これで問題が解決しない場合は、あなたのコードをポストする必要があります。それはおそらくバグではないでしょう

+0

私は正しくそれをやった。これは5.3で正常に動作しています。5.4(ベータ版)を使用しています。明日もまたそれを修正した場合や、間違ったことをしていた場合には明日もう一度チェックしますが、多くの方法で試してみると、名前空間が異なる場合、2つのクラスが別々のカスタム名前空間にある場合に問題ありません。 – Everts

+0

@Evertts 5.4(ベータ版)も使用しています。できます。あなたが帰宅したら、あなたのコードを投稿してください。あなたはたぶんどこかでうんざりしました。 – Programmer

関連する問題