Ermitteln Sie die Bedürfnisse des Benutzers und führen Sie ihn durch die Navigationseinrichtung. Siehe navigation-system.md für erweiterte Komponentendetails, API-Notizen, Code-Rezepte und Fehlerbehebung.
C# an eval übergeben
eval kompiliert einen Anweisungsblock, keine Datei. Zwei Konsequenzen, die beide einen Kompilierungsfehler und keine Warnung verursachen:
- Keine
using-Anweisungen. Der Compiler liestusing UnityEngine;als Ressourcenfreigabe-Anweisung und lehnt sie ab (CS0210). - Typen müssen vollqualifiziert sein. Ein bloßes
AssetDatabaseoderVolumewird nicht aufgelöst (CS0246/CS0103), und ein bloßesObjectist mehrdeutig mitobject(CS0104).
Wenn ein nachfolgender Code-Ausschnitt als Datei geschrieben ist – mit using-Anweisungen, aus Lesbarkeitsgründen oder weil er im Projekt gespeichert werden soll – qualifizieren Sie die Typen, bevor Sie ihn an eval übergeben.
Routing-Logik
| Benutzer sagt | Interpretation |
|---|---|
| „Navigation hinzufügen” / „Nav einrichten” | Vollständige Einrichtung: NavMeshSurface + Bake + NavMeshAgent |
| „Diese Figur navigieren lassen” | NavMeshAgent hinzufügen, sicherstellen, dass NavMesh existiert |
| „Pfadfindung hinzufügen” | NavMeshAgent + Bewegungs-Skript |
| „Agent bewegt sich nicht” / „Pfad nicht gefunden” | Fehlerbehebung – siehe Entscheidungsbaum zur Fehlerbehebung in der Referenz |
| „Hindernisse vermeiden” | NavMeshObstacle mit Ausfräsung oder Vermeidung |
| „Zwei Bereiche verbinden” / „Springen über” | NavMeshLink zwischen Bereichen |
| „Zwischen Punkten patrouillieren” | NavMeshAgent + Patrouillen-Skript |
| „Klicken, um sich zu bewegen” | NavMeshAgent + Raycast-Klick-zum-Bewegen-Skript |
| „Figur beim Navigieren animieren” | Animator mit NavMeshAgent koppeln |
| „Verschiedene Agentengrößen” | Agententypen im Navigationsfenster konfigurieren |
| „Bereiche und Kosten” / „Bereiche einschränken” | NavMesh-Bereichstypen, Modifikatoren und Agentenbereichsmasken |
Arbeitsablauf
0. Paketinstallation prüfen
Überprüfen Sie vor allem anderen, ob com.unity.ai.navigation installiert ist. Falls es fehlt, fügen Sie es unter dependencies in Packages/manifest.json hinzu – Unity löst es auf, wenn der Editor wieder den Fokus erhält, und dies benötigt keine Editor-Verbindung:
"com.unity.ai.navigation": "<aktuelle 2.x-Version>"
Erfinden Sie die Versionszeichenfolge nicht. Lesen Sie die aktuelle aus der Unity-Registry – https://packages.unity.com/com.unity.ai.navigation listet jede veröffentlichte Version auf – oder kopieren Sie die Version, die ein benachbartes Unity-Paket in diesem Manifest bereits verwendet. Eine Version, die nicht existiert, führt dazu, dass Unity die Auflösung stillschweigend fehlschlagen lässt, sodass eine falsche Vermutung so aussieht, als wäre nichts passiert.
Fahren Sie erst fort, wenn die Installation bestätigt ist. Wenn Sie einen Live-Editor haben, um C# auszuführen, finden Sie in navigation-system.md das Client.Add-Äquivalent.
1. Vorab-Check: Aktuelle Navigationseinrichtung bewerten
Überprüfen Sie vor Änderungen, was bereits vorhanden ist:
- Finden Sie die vorhandenen Navigationskomponenten. Fragen Sie bei verbundenem Editor die Live-Szene nach
NavMeshSurface,NavMeshAgent,NavMeshObstacle,NavMeshLinkundNavMeshModifierab – siehe dasunity-cli-Skill zur Steuerung eines laufenden Editors. Ohne Editor durchsuchen Sie die Szenen- und Prefab-Dateien nach diesen Komponentennamen. - Überprüfen Sie die konfigurierten Agententypen über Fenster > KI > Navigation > Registerkarte Agents.
- Fassen Sie ALLE erkannten Navigationskomponenten zusammen, bevor Sie Änderungen vorschlagen.
2. Fehlende Informationen sammeln
Stellen Sie vor dem Erstellen von Komponenten sicher, dass der Benutzer Folgendes angegeben hat: begehbare Oberflächen, Agententyp/-größe, Agentenverhalten, Hindernisse, Links sowie Anforderungen an Bereiche/Kosten. Fragen Sie nach, wenn etwas unklar ist. Siehe die Checkliste zur Informationssammlung in der Referenz für vollständige Details.
3. Planung & Ausführung
Befolgen Sie diese allgemeine Reihenfolge. Siehe die Komponenten-Einrichtungsanleitung in der Referenz für detaillierte Schritt-für-Schritt-Anleitungen pro Komponente:
- NavMesh Surface – das begehbare Mesh erstellen (baken)
- NavMesh Agent – Pfadfindungs-Figuren hinzufügen
- NavMesh Obstacle – dynamische Hindernisse hinzufügen
- NavMesh Link – getrennte NavMesh-Bereiche verbinden
- NavMesh Modifier / Modifier Volume – Bereichstypen feinjustieren
- Skripte – Bewegung, Patrouille, Klick-zum-Bewegen, Animationskopplung (siehe Häufige Rezepte in der Referenz)
4. Validierung
Überprüfen Sie nach der Einrichtung:
- NavMesh ist gebacken und sichtbar (blaue Überlagerung)
- NavMeshSurface-Agententyp stimmt mit NavMeshAgent-Agententyp überein
- Agents haben einen gültigen Pfad zu ihrem Ziel
- Hindernisse fräsen oder blockieren korrekt
- Links haben beide Enden verbunden und Aktiviert ist eingeschaltet
- Bereichsmasken erlauben die beabsichtigte Bewegung
- Keine widersprüchlichen Komponenten (siehe Leitfaden zum Mischen von Komponenten in der Referenz)
- Falls Rigidbody mit NavMeshAgent verwendet wird, ist Is Kinematic aktiviert
5. Abschließende Bestätigung
Fassen Sie zusammen, was erstellt oder geändert wurde:
- NavMesh Surfaces: welches GameObject, Agententyp, Geometriemodus, Bake-Status
- NavMesh Agent(s): welches GameObject, Geschwindigkeit, Anhalteabstand, Bereichsmaske
- NavMesh Obstacle(s): welches GameObject, Form, Ausfräsung an/aus
- NavMesh Link(s): Start/Ende, bidirektional, Bereichstyp
- Skripte: welche Skripte an welchen GameObjects angehängt sind
- Erforderliche manuelle Schritte (Wegpunkte anpassen, nach Szenenänderungen erneut baken usw.)