私が構築する必要があり、そこからHLAPIを使用して、ネットワークユニティプロジェクトを持っている:未解決の名前空間UnityEngine.VR.WSA
- A Hololensクライアント(プラットフォーム= WSA)
- A Windowsデスクトップクライアント(プラットフォーム= PCスタンドアロン)
- A Windowsデスクトップサーバ(プラットフォーム= PCスタンドアロン)
私は3つの専門のシーン、これらの役割ごとに1つ、およびのみに依存し、実行時にそれらのいずれかをロードベースのシーンを持っていますロールe設定。
ここから問題があります。私はのHoloToolkitを含むというスクリプトを持ち、名前空間UnityEngine.VR.WSA
とUnityEngine.VR.WSA.Ipnut
のクラスを使用するHololensクライアントシーンで参照されています。これはWSAプラットフォームにとってうまくコンパイルされます。しかし、デスクトップクライアントとデスクトップサーバーを構築するときに、それらの名前空間が存在しないかのようにすべてのスクリプトがコンパイルに失敗します。ここ
は一例であり:
Assets/HoloToolkit/Input/Scripts/GestureManager.cs(139,17): error CS0246: The type or namespace name `GestureRecognizer' could not be found. Are you missing an assembly reference?
GestureRecognizer
はUnityEngine.VR.WSA.Input
です。私はバックエンドが実行時にNotSupported例外を投げるのに十分なほどスマートであると思っていましたが、もしそれらの名前空間のクラスがPCスタンドアロンプラットフォームの下で呼び出されれば(そして、私はrole = desktopクライアントまたはデスクトップサーバー)しかし、それは単にコンパイルされないので、私は本当に立ち往生しています。サードパーティのインポートされたアセットでもどこにでも挿入するために、UNITY_WSA
またはUNITY_STANDALONE
プリプロセッサフラグを使用してすべてを書き直すことなく、誰にでもこの解決策を知っていますか?
私はHololensのUnity 5.4ベータ版を使用していましたが、これはまったく問題ありませんでした。その後私は5.6に移行し、これが1になりました。
ありがとうございました。私はあなたの提案を単一のラッパークラスの下に集めることは理解していますが、ホロレンズ、またはまだ追加されていないことがあればHoloToolkitを使ってはいけません。多くのサブプロジェクトに分解されます。サブプロジェクトごとに1つのプラットフォームがあり、この質問が行われます。実際、Unity HLAPIを使ってすでに試してみました。異なるプロジェクトの資産は扱うのが面倒です。 HLAPIは1つのプロジェクトを対象としています。しかし多分ユニティLLAPIを使用してください... – RCYR
コードを同じように見せなければならないので、さらに悪いことに、サブプロジェクトごとに1つのプラットフォームを実行できます。 1つのプロジェクトで1つのバグを修正する場合は、別のプロジェクトで別のバグを修正する必要があります。それが管理不能になるまでにどれぐらいの時間がかかりますか?ラッパーを使用したくない場合は、問題ありません。上記の関数、インポート、変数宣言の中で '#if UNITY_WSA'を使用してください。それはうまくいくはずです。 – Programmer