Ich habe ein Netzwerk Unity Projekt HLAPI mit, von dem ich aufbauen müssen:Ungelöste Namespace UnityEngine.VR.WSA
- A Hololens Client (Plattform = WSA)
- Ein Windows-Desktop-Client (Plattform = PC Standalone)
- ein Windows-Desktop-Server (Plattform = PC Standalone)
ich habe drei spezielle Szenen, eine für jede dieser Rollen und eine Basis-Szene, die nur eine von ihnen zur Laufzeit lädt je nach eine Rolle die Einstellung.
Hier ist das Problem von dort. Ich habe Skripte, einschließlich der HoloToolkit von Microsoft, referenziert in der Hololens-Client-Szene mit Klassen in Namespaces UnityEngine.VR.WSA
und UnityEngine.VR.WSA.Ipnut
. Das passt gut für die WSA-Plattform. Wenn es jedoch an der Zeit ist, den Desktop-Client und den Desktop-Server zu erstellen, können all diese Skripts nicht kompiliert werden, als wären diese Namespaces nicht vorhanden. Hier
ein Beispiel:
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
ist in UnityEngine.VR.WSA.Input
. Ich hätte gedacht, dass das Backend schlau genug wäre, NotSupported Exceptions zur Laufzeit auszulösen, wenn irgendeine Klasse in diesen Namespaces unter der Standalone-PC-Plattform aufgerufen würde (und ich schlau genug bin, nichts davon zu nennen, wenn role = desktop client oder Desktop-Server), aber es kompiliert einfach nicht, also bin ich wirklich fest. Kennt jemand eine Lösung dafür, ohne alles mit UNITY_WSA
oder UNITY_STANDALONE
Preprozessor-Flags neu zu schreiben, um überall sogar importierte Drittanbieter-Assets einzufügen?
Ich war auf Unity 5.4 Beta für Hololens und das war überhaupt kein Problem. Dann bin ich auf 5,6 gewandert und das wurde eins.
Vielen Dank für Ihre Antwort.Ich verstehe Ihren Vorschlag, alles unter einer einzigen Wrapper-Klasse zu sammeln, aber ich sollte es nicht mit dem HoloToolkit tun, wenn Sie mit Hololens oder etwas noch nicht hinzugefügtem vertraut sind. Ich habe diese Möglichkeit vermieden, aber vielleicht sollte das Projekt selbst in viele Teilprojekte aufgeteilt werden. Eine Plattform pro Teilprojekt und diese Frage wäre erledigt. In der Tat habe ich es bereits mit Unity HLAPI versucht; Assets aus verschiedenen Projekten sind schwer zu handhaben. Die HLAPI scheint mir für ein einzelnes Projekt bestimmt zu sein. Aber vielleicht mit Unity LLAPI ... – RCYR
Sie können eine Plattform pro Teilprojekt machen, die noch schlimmer ist, weil Sie Ihren Code aussehen müssen. Wenn Sie einen Fehler in einem Projekt beheben, müssen Sie einen anderen Fehler in einem anderen Projekt beheben. Wie lange wird es dauern, bevor es nicht mehr handhabbar ist? Wenn Sie keinen Wrapper verwenden möchten, ist das in Ordnung. Verwenden Sie einfach "#if UNITY_WSA", wie oben in Funktionen, Import und Variablendeklaration erwähnt. Das sollte funktionieren. – Programmer