Unity AR-Spiel (Spielzeugauto), das auf die Grube tritt

Ich interessiere mich seit kurzem für AR. Lassen Sie uns zuerst bekannt machen, was AR ist. AR ist die Abkürzung für Augmented Reality (erweiterte Realität), die auf der Echtzeit-Bilderfassung, Analyse und dem Verständnis der realen Welt durch die Kamera basiert und auf dieser Grundlage dann virtuelle Objekte (Informationen) integriert, um den Zweck zu erreichen Erlebnis steigern - die Welt ist bunter geworden! Typische AR-Geräte sind Google Glass, Microsoft HoloLens usw. Da Smartphones über eingebaute Kameras verfügen, ist es bequemer, AR-Anwendungen auf Mobiltelefonen auszuführen.

Aus Sicht der Anwendungsentwicklung ist Plattformunterstützung SDK unverzichtbar: Google hat ARCore und Apple hat ARKit. Ich kann kaum als Android-Programmierer bezeichnet werden, ich habe nur die offizielle ARCore-Dokumentation gelesen und habe ein allgemeines Verständnis der technischen Konzepte von AR. Um AR-Anwendungen auf Android-Geräten auszuführen, ist zusätzlich zu den Systemanforderungen von 7.0 und höher auch eine Schlüsselkomponente namens „Google Play Services for AR“ erforderlich – Sie können zum Google Play App Store gehen, um sie online zu installieren, oder herunterladen .apk von GitHub Die Kernfunktionen von AR werden von diesem Dienst bereitgestellt, und die AR-Anwendung kooperiert mit ihm, indem sie eine Sitzung aufbaut. Die Beziehung zwischen ihnen ist wie folgt:

Wir Programmierer sind eher pragmatisch, nach einem gewissen theoretischen Wissen müssen wir Code per Hand schreiben. Google liefert viele Beispiele, was die Lernschwelle effektiv senkt, aber Unity3D ist dafür etwas interessanter. Um eine gute AR-Erfahrung zu machen, müssen wir anscheinend Unity lernen (die Programmiersprache ist C#), obwohl wir keine Spiele entwickeln müssen ... Ein weiterer Vorteil der Verwendung von Unity-Entwicklung ist, dass es entwickelt werden kann Einmal, und sowohl Android als auch iOS können universell verwendet werden. , Verbessern Sie die Entwicklungseffizienz!

Aus Sicht der Toolkette lässt sie sich grob in zwei Kategorien einteilen:

Google scheint Unity zu bevorzugen, und die Einführung in Unity ist offensichtlich viel mehr als Unreal; hier ist ein ausgezeichnetes Dokument (muss die Mauer umwerfen ⊙︿⊙), das uns lehrt, Unity zu verwenden, um ein AR-Spiel zu entwickeln: Flugzeuge durch Handy identifizieren Handykameras und fahren Sie ein Spielzeugauto auf der Oberfläche. Vor der eigentlichen Bedienung ist es am besten, sich ein grundlegendes Verständnis des Unity-Editors zu verschaffen. Es wird dringend empfohlen, dass auf Station B ein UP- Master namens „Afa Hello“ vorhanden ist . Es gibt nur wenige Videos in jeder Folge Minuten, einfach die ersten 111 Folgen anschauen, sehr geeignet für Anfänger mit null Fundament.

Folgen Sie dann einfach der Dokumentation von Google . Ich werde einige kleine Gruben aufzeichnen, auf die ich während dieses Prozesses getreten bin, um sicherzustellen, dass jeder dieses AR-Spiel erfolgreich abschließen kann.

1. Kapitel 2 des Dokuments: Die im Artikel erwähnte Version des Unity-Editors ist 2020.3 LTS, und ich verwende die neueste Version 2021.3.16f1. Beim Erstellen eines neuen Projekts gibt es keine solche Vorlage wie Universal Render Pipeline, also ersetzen Sie sie durch 2D (URP). Es gibt keinen ForwardRenderer im Verzeichnis Assets > Settings des Projektfensters, ändern Sie einfach den Renderer2D entsprechend.

2. Kapitel 4 des Dokuments: Normalerweise bewegt sich nach Abschluss aller Schritte in diesem Kapitel das Visier mit der Kameralinse des Handys, leider ist das kontraproduktiv. Sie müssen die Datei „ReticleBehaviour.cs“ ändern und „hits.Length“ in „hits.Count“ ändern. Beim Ausführen des Programms habe ich festgestellt, dass die Konsole von Unity eine solche Fehlermeldung ausgibt:

NullReferenceException : Objektverweis nicht auf eine Instanz eines Objekts festgelegt

ReticleBehaviour.Update () (unter Assets/Starter Package/ ReticleBehaviour.cs:44 )

Der Grund dafür ist, dass DrivingSurfaceManager.RaycastManager auf ein leeres Objekt verweist . Sie müssen die Datei DrivingSurfaceManager.cs ändern und die folgende Codezeile in der Startfunktion hinzufügen:

RaycastManager = GetComponent<ARRaycastManager>();

Nach dem Ändern dieser wenigen Stellen funktioniert es wie erwartet! Gleichzeitig führt dies auch zu der Frage, wie man Unity-Projekte debuggt, wie z. B. Single-Step-Debugging von C#-Code in Visual Studio? Ich beziehe mich auf diesen Artikel , es werden verschiedene Szenarien besprochen. Beachten Sie, dass Sie in der Einstellung Unity > Bearbeiten > Einstellungen... > Externe Tools den externen Skript-Editor auf Microsoft Visual Studio 2019 ändern, anstatt auf die standardmäßige Dateierweiterung Öffnen nach.

3. Kapitel 5 des Dokuments: Nach der Fertigstellung greift das Rendering des Umgebungslichts nicht, beim Debuggen in Visual Studio kommt es nach dem Setzen eines Breakpoints in der FrameReceived-Funktion der LightEstimation.cs-Datei nicht rein. Der Grund dafür ist, dass der Light Estimation-Skriptkomponente des AR-Kamera-Managers von Directional Light im Unity-Editor kein Wert zugewiesen wird. Richten Sie es einfach auf die AR-Kamera der Szene.

4. Hausaufgabe: Sie können die OnTriggerEnter-Funktion in der Datei CarBehaviour.cs hinzufügen. Wenn das Spielzeugauto auf die Geschenkbox trifft, wird ein Soundeffekt abgespielt und ein Partikeleffekt erzeugt:)

Kurz gesagt, befolgen Sie Schritt für Schritt die im Dokument angegebenen Schritte, und schließlich können Sie diese AR-Anwendung ausführen. Die Codemenge ist nicht zu groß und leichter zu verdauen. Es ist nur so, dass der tatsächliche Effekt nicht ideal ist, zum Beispiel ist die Ebenenerkennung nicht sehr genau, also müssen wir weiter untersuchen, wie wir sie optimieren können.

Guess you like

Origin blog.csdn.net/happydeer/article/details/128500133