Tools und RQL
Was ein AI-Agent mit Unity MCP im Unity Editor kann: RQL-Abfragen und -Mutationen, Screenshots, C#-Skripte, Tests, Pakete und Profiling.
Diese Seite erklärt, was der AI-Agent in deinem Unity-Projekt tun kann, sobald Unity MCP verbunden ist: welche Tools er sieht, wie RQL ihn fast alles im Editor lesen und ändern lässt und welche Tools installiert, aber verborgen sind. Die vollständige, durchsuchbare Liste mit Parametern steht im Unity-Tool-Katalog, und die Abfragesprache ist in der RQL-Referenz dokumentiert.
Die Tools, die der Agent standardmäßig sieht
Seit Version 1.0.0 hält das Plugin die Tool-Liste des Agenten kurz. Diese sieben Tools sind nach der Installation sichtbar:
| Tool | Was es tut |
|---|---|
rql-query | Liest Editor-Daten mit einer RQL-Abfrage: Szenen, GameObjects, Komponenten, Assets, die Console, Einstellungen, Tests, den Profiler. |
rql-mutate | Ändert Editor-Daten oder ruft Editor-Operationen mit RQL auf: Objekte und Assets erstellen, ändern, verschieben und löschen, Szenen öffnen und speichern. |
rql-schema | Beschreibt die Quellen, Typen, Member und Aufrufe, die RQL nutzen kann, und gibt Themen-Guides aus. Der Agent beginnt hier, wenn er unsicher ist. |
script-execute | Kompiliert und führt C#-Code im Editor mit Roslyn aus und gibt das Ergebnis zurück. |
screenshot-isolated | Rendert ein GameObject isoliert aus einem gewählten Winkel, optional als 2x2-Komposit, damit das Modell es sich ansehen kann. |
tests-run | Führt EditMode- oder PlayMode-Tests aus und gibt die Ergebnisse pro Test zurück. |
unity-tool-list | Listet jedes Tool auf und ob der Agent es sieht. |
Eine kurze Liste kostet weniger Tokens und lässt dem Modell mehr Raum zum Denken. Die anderen Tools sind weiterhin installiert; siehe Verborgene Tools.
RQL: eine Sprache für den ganzen Editor
RQL ist eine Abfragesprache über die Live-Daten des Editors. Eine Abfrage beginnt mit einer Quelle und schickt das Ergebnis durch Stufen, die durch | getrennt sind, etwa where, select, get, set und call. Statt eines Tools pro Aktion (die alten gameobject-create, scene-save, console-get-logs und Dutzende mehr) schreibt der Agent eine Abfrage.
Lies die gesamte Hierarchie der geöffneten Szenen:
roots | recurse children | select name activeFinde den Player:
objects | where name == "Player" | select path name activeErstelle eine Bodenebene:
editor | call CreateGameObject({name: "Ground", primitive: "Plane"})Füge eine Komponente hinzu und speichere:
objects | where name == "Player" | call AddComponent("Rigidbody")
editor | call SaveScenes()Lies nur die Fehler aus der Console:
console | where logType == "Error"Jeder rql-mutate-Aufruf ist eine Undo-Gruppe, sodass Strg+Z ihn rückgängig macht, und geänderte Assets, Szenen und das geöffnete Prefab werden nach der Mutation gespeichert. rql-mutate akzeptiert außerdem dry_run, um eine Vorschau der Änderungen zu erhalten, und max_targets, um zu begrenzen, wie viele Objekte eine Mutation berühren darf.
RQL-Quellen in Unity
| Quelle | Inhalt |
|---|---|
scenes, roots, objects | Geladene Szenen, ihre Root-GameObjects und jedes GameObject darin. |
selection | Die aktuelle Editor-Auswahl. |
prefab | Das im Prefab-Modus geöffnete Prefab. |
editor | Editor-Operationen: GameObjects, Materialien, Ordner und Szenen erstellen; Szenen und Prefabs öffnen und speichern; Assets kopieren, verschieben und löschen; Menüpunkte ausführen; Play-Mode-Status. |
settings | Projekteinstellungen. |
console | Erfasste Editor-Log-Einträge. |
shaders, componentTypes | Verfügbare Shader und Komponententypen. |
tests, testResults | Der Testbaum und die letzten Ergebnisse. |
profiler | Speicher-, Rendering-, Skript- und Frame-Daten; Captures starten, stoppen, speichern und laden. |
lighting | Die Umgebung der aktiven Szene (Ambient, Nebel, Skybox, Sonne, Reflexionen), die Lighting Settings und der Bake. |
Assets werden über ihren Pfad mit unity.asset("Assets/…") adressiert oder mit unity.assets("t:Material") gesucht. Jede installierte Erweiterung fügt eigene Quellen und Typen hinzu, zum Beispiel tilemap oder cinemachine.
Da RQL über Reflexion arbeitet, kann der Agent auch Member deiner eigenen Komponenten lesen und setzen, nicht nur die von Unity mitgelieferten. Du kannst RQL mit eigenen Adaptern etwas über deine eigenen Typen beibringen.
Skripte und C#-Ausführung
script-execute kompiliert einen C#-Schnipsel mit Roslyn und führt ihn im Editor aus. Es nimmt den Code plus optionale className, methodName, zusätzliche usings und Helper-Dateien zum include entgegen. Es ist der Notausgang für alles, was RQL nicht abdeckt. Von einem Terminal aus ruft unity-mcp-cli exec dasselbe Tool auf:
unity-mcp-cli exec 'Application.unityVersion'Um Dateien zu schreiben statt Code auszuführen, verwalten die verborgenen Tools script-read, script-update-or-create und script-delete die .cs-Dateien im Projekt. Unity kompiliert nach einer Änderung neu; die Verbindung bricht während des Domain Reloads kurz ab und kommt von selbst zurück.
Tests
tests-run führt EditMode- oder PlayMode-Tests aus (testMode, Standard ist EditMode). Filtere nach Assembly, Namespace, Klasse oder Methode, oder übergib eine RQL-Auswahl über die Quelle tests, um genau die gewählten Tests als einen Lauf auszuführen. Ergebnisse lassen sich mit RQL über testResults filtern. Optionen steuern, ob bestandene Tests, Meldungen, Stacktraces und Console-Logs enthalten sind, was die Ausgabe klein hält.
unity-mcp-cli run-tool tests-run ./MyUnityProject --input '{"testMode":"EditMode"}'Screenshots
screenshot-isolated ist standardmäßig sichtbar. Drei weitere sind verborgen: screenshot-scene-view, screenshot-game-view und screenshot-camera. Bilder sind an der längsten Kante auf 3840 Pixel begrenzt, damit sie durch den MCP-Transport passen. Screenshots brauchen ein Grafikgerät: Ein Editor, der mit -nographics gestartet wurde, gibt einen Fehler statt eines leeren Bildes zurück.
Verborgene Tools
Diese sind installiert, stehen aber nicht in der Liste des Agenten. Ein verborgenes Tool wird trotzdem ausgeführt, wenn es beim Namen aufgerufen wird.
- Screenshots:
screenshot-scene-view,screenshot-game-view,screenshot-camera. - Skripte:
script-read,script-update-or-create,script-delete. - Pakete:
package-list,package-search,package-add,package-removefür den Unity Package Manager. - Tool-Verwaltung:
tool-set-visibilityund sein veraltetes Aliastool-set-enabled-state.
Blende sie im AI Game Developer-Fenster (Tools > Open), mit dem Tool tool-set-visibility oder mit Folgendem ein:
unity-mcp-cli configure ./MyUnityProject --enable-tools package-add,package-listPrompts und Skills
Das Plugin liefert außerdem 46 MCP-Prompts (Slash-Command-Vorlagen wie setup-basic-scene oder add-event-system) in sechs Gruppen: Skripting, GameObjects und Komponenten, Szenen, Debugging und Testen, Asset-Verwaltung, Animation und Timeline. Sie sind standardmäßig verborgen; aktiviere die gewünschten unter Prompts > Open.
Skills sind Markdown-Dateien, die das Plugin in den Skills-Ordner deines Agenten generiert. Sie enthalten die Anleitung unity-rql mit der RQL-Syntax für Unity und jede installierte Erweiterung sowie Hinweise zu Setup und CLI. Aktiviere sie mit Skills > Auto-generate im Fenster oder führe unity-mcp-cli setup-skills <agent> aus.
Tool-Namen aus älteren Tutorials
Version 1.0.0 hat die Tools mit einem Tool pro Aktion entfernt. Wenn ein Tutorial eines davon erwähnt, verwende stattdessen RQL:
gameobject-create,gameobject-find,gameobject-modify,gameobject-destroy,gameobject-component-*: RQL aufobjects,rootsundselectionmitsetundcall.scene-create,scene-open,scene-save:editor | call NewScene(…),OpenScene(…),SaveScenes().assets-*,assets-prefab-*,assets-material-create:unity.asset(…),unity.assets(…)undeditor-Aufrufe wieCreateMaterial,CopyAsset,InstantiatePrefab.console-get-logs,console-clear-logs: die Quelleconsoleundeditor | call ClearConsole().editor-application-*,editor-selection-*:editor-Member wieisPlayingundselection.reflection-method-find,reflection-method-call,type-get-json-schema: RQL-callundrql-schema.profiler-*: die Quelleprofiler.
Verwandte Seiten
- Unity-Tool-Katalog und RQL-Referenz.
- Eigene Tools, um eigene hinzuzufügen.
- Unity-Best-Practices für das Prompting.