HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

0 Shares

Nachdem wir das Toolkit installiert, unsere Fertighäuser eingerichtet und Unity für den Export nach HoloLens vorbereitet haben, können wir mit den unterhaltsamen Dingen fortfahren, die beim Erstellen einer dynamischen Benutzeroberfläche erforderlich sind. In diesem Abschnitt erstellen wir den Systemmanager.

Auf der einfachsten Ebene ist der Systemmanager ein einfaches System, das so konzipiert ist, dass es mit jedem 3D-Objekt, das Benutzer ihrer Szene hinzufügen möchten, gleich funktioniert. Wenn es sich um ein Objekt mit einem Netz und einem Renderer handelt, sollte es sich für den Benutzer genauso verhalten.

In Unity sind einige Tools integriert, die bei dieser Art von Prozessen helfen sollen: Stichworte und Schichten. Ich habe diese Tools in einer früheren Version dieses von mir erstellten Systems verwendet, und es war klobig und nicht wirklich das, was ich anstrebte. Deshalb habe ich die Regel aufgestellt, dass ich sie nicht für neue Objekte in der Szene verwenden möchte.

Vorher: Erstellen einer dynamischen Benutzeroberfläche für die HoloLens, Teil 1 (Setup)

Damit diese Art der Einrichtung ohne Tags und Ebenen funktioniert, benötigen wir ein intelligenteres System, das erkennen kann, wann ein neues Objekt in unsere Szene eingetreten ist. Sobald wir ein vollständiges Projekt haben, werden wir ein Objekt instanziieren und es dann an eine Liste von Objekten übergeben. Aber jetzt musste ich mir etwas einfallen lassen, das sich nicht auf etwas anderes als das in der Szene stützte.

Warum brauchen wir einen System Manager?

Der Grund, warum wir ein System wie das hier brauchen, ist einfach gesagt die dynamische Flexibilität. Um das System flexibel zu halten, müssen wir vermeiden, Tags und Ebenen zu verwenden, wenn neue Objekte in die Szene eintreten. Während wir dafür bestimmte Elemente des Unity-Systems vermeiden, haben wir Komponenten, die zu jedem Objekt hinzugefügt werden müssen, wenn es in die Szene kommt. Dadurch können die Hauptfunktionen des Systems ausgeführt werden. transformieren, skalieren und drehen.

Verpassen Sie nicht: Die Begriffe, die Sie kennen müssen, um in ARKitit arbeiten zu können

Um dies zu erleichtern, ist die Lösung, zu der ich gekommen bin, ein Filtersystem. Um alle werkzeug- oder systembasierten Objekte herauszufiltern, haben wir werden benutze a Etikett für diesen Zweck. Kennzeichnen Sie unsere Werkzeuge und Objekte, die Teil des Systems sind, damit sie den Benutzer nicht stören.

Mit einem Array und einer Liste werden wir sie vergleichen FixedUpdate () Bild zu Bild. Während Aktualisieren(), die wir üblicherweise in Unity verwenden, wird aktualisiert, sobald der Frame fertig ist. FixedUpdate () hat eine feste Rate. Beide Optionen sind aber höchst ineffizient FixedUpdate () ist etwas weniger ineffizient. Der Prozess erfordert das Abrufen einer Liste aller Objekte in der Szene in jedem Frame, was langsam ist. Dann vergleichen wir die Anzahl der Objekte aus dem vorherigen Frame. Wenn diese Zahlen nicht übereinstimmen, müssen wir einige Dinge tun, z. B. Komponenten zu den Objekten hinzufügen. Wir werden dies in einem späteren Kapitel ausführlich behandeln.

Mal sehen, wie das aussieht.

Schritt 1: Erstellen Sie das Manager-Objekt

Erstellen Sie bei geöffneter Einheit und geöffnetem Projekt aus dem vorherigen Kapitel ein leeres Objekt in der Hierarchieansicht und benennen Sie es NRSRManager.

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)
HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Mit NRSRManager Klicken Sie in der Inspektoransicht auf die Schaltfläche “Komponente hinzufügen”. Klicken Sie unten in der Auswahl auf “Neues Skript”.

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Art NRSRManager und klicken Sie auf “Erstellen und Hinzufügen”.

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Schritt 2: Deklarieren Sie die Variablen

Doppelklicken Sie auf die Datei “NRSRManager”, um sie in Visual Studio zu öffnen.

In diesem Codeabschnitt geben wir unsere using-Anweisungen ein und deklarieren einige Variablen. Dann werden wir in der Klassendeklaration ändern Monoverhalten zu Singleton Dadurch ist die Klasse in der gesamten Anwendung leicht zugänglich.

Als nächstes deklarieren wir das Array von Renderer und die Liste von GameObjects in der Erklärung erwähnt. Schließlich folgen vier Ganzzahlen, um die Anzahl der verschiedenen Objekte zu zählen. Jeder int wird an der entsprechenden Stelle benannt.

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Schritt 3: Überprüfen Sie die Hauptschleife auf Änderungen nach Frame

Als nächstes haben wir unsere FixedUpdate () Methode / Ereignis zum Überprüfen des Arrays und der Liste. FixedUpdate () wird jeder Frame mit fester Bildrate genannt, der seltener als der ist Aktualisieren() das nennt man jeden Frame.

Zuerst führen wir die Methode aus FindObjectsInScene (), die wir in Kürze behandeln werden. Wir setzen die TotalNumbersOfObjects Ganzzahl basierend auf der Gesamtzahl der Objekte in der ObjectsInScene Array.

Dann testen wir, ob die TotalNumbersofObjects ist nicht gleich dem PreviousFrameObjectCount. Wenn diese Bedingung falsch ist, filtern wir alle Werkzeug- oder Systemobjekte heraus und setzen die numberofVisibleObject Variable gleich der Anzahl der GameObjects in FilterObjectInScene.

An diesem Punkt durchlaufen wir alle diese gefilterten Objekte und führen Aufgaben aus, die wir in einem späteren Kapitel behandeln werden.

Zum Schluss setzen wir die PreviousFrameObjectCount auf die Anzahl von ObjectsInScene.

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Schritt 4: Finden Sie alle Objekte in der Szene

Die erste Methode, die in unserer aufgerufen wurde FixedUpdate () war FindObjectsInScene (). Hier löschen wir unser Array und verwenden dann das FindObjectsOfType Methode sammeln wir alle Objekte mit Renderern in der Szene in das Array.

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Schritt 5: Filtern Sie, was nicht benötigt wird

Und schließlich haben wir unsere FilterUnneededObjects () Methode.

Hier räumen wir unsere FilterObjectsInScene Liste <> und setze die Anzahl der gefilterten Objekte bis Null. Dann durchlaufen wir alle ObjectsInScene und wenn sie das nicht hätten NRSRTools Tag, dann fügen wir sie dem FilterObjectsInScene Liste <>. Andernfalls addieren wir 1 zum numberOfFilteredObjects.

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Hier ist ein Pastebin-Link zur gesamten CS-Datei, der als Referenz verwendet werden kann, falls Sie Probleme beim Zusammenstellen haben.

Schritt 6: Siehe die Ergebnisse bei der Arbeit

Wenn Sie nun die Anwendung in Unity ausführen, indem Sie auf die Schaltfläche “Wiedergabe” klicken, fügen Sie der Szene eine Reihe von Objekten hinzu und wählen Sie a aus NRSRManager Objekt, sollten Sie so etwas im Inspektor sehen:

HoloLens Dev 101: Erstellen einer dynamischen Benutzeroberfläche, Teil 2 (Der Systemmanager)

Wenn Sie die erweitern Objekte in der Szene und Objekte in Szene filternsollte eine Liste aller Objekte angezeigt werden, die sich derzeit in der Szene mit einer Renderer-Komponente befinden.

Die ersten Schritte zur Inbetriebnahme des Systems sind abgeschlossen. Als nächstes werden wir mit dem Blick-Eingang für die HoloLens arbeiten, damit wir eine fokussierte Auswahl durchführen können. Bis dann.

Weiter oben: Erstellen einer dynamischen Benutzeroberfläche für die HoloLens, Teil 3 (Fokus & Materialien)

0 Shares