Unity
- テスト済みバージョン: Windows 11上のUnity 6000.6.7f1。
- サポート対象バージョン:
package.jsonで"unity": "6000.0"(Unity 6000.0以降)と宣言。 - パッケージ依存関係:
com.unity.nuget.mono-cecil(1.11.6)。
プラグインのインストール
Section titled “プラグインのインストール”Git URLからの導入
Section titled “Git URLからの導入”- Unityでプロジェクトを開きます。
- Package Managerウィンドウを開きます(
Window > Package Manager)。 +ボタンをクリックし、Install package from git URL を選択して次のように入力します。
https://github.com/crane-valley/cluewren.git?path=plugin/unity/com.cranevalley.cluewrenローカルパスからの導入
Section titled “ローカルパスからの導入”- Package Managerウィンドウで
+ボタンをクリックし、Install package from disk を選択します。 - クローンの
plugin/unity/com.cranevalley.cluewrenフォルダに移動します。 - その
package.jsonをダブルクリックします。
brainへの接続
Section titled “brainへの接続”Window > Cluewren を開くと、Cluewrenエディタウィンドウ(PlaytestWindow.cs)が表示されます。接続状態(“Disconnected”、“Connecting”、“Connected”、またはエラーメッセージ)が表示されます。
- 自動接続: プラグインは
%LOCALAPPDATA%\Cluewren\brain.jsonの存在を2秒ごとに確認します。brainプロセスが起動すると、ループバックWebSocket(ws://127.0.0.1:<port>/v1/bridgeまたは[::1])経由で自動的に接続します。 - 手動操作:
Window > Cluewrenウィンドウの Connect および Disconnect ボタンを使用して、手動でブリッジ接続を開閉できます。 - 再生モードのリロード: ドメインリロードを無効化していない限り、再生モード(Play mode)に入るとアセンブリがリロードされます。接続はいったんWebSocketコード1012で切断され、その後
hello {"resume": <session>}で再接続して実行中のセッションを維持します。
フォルダ構成
Section titled “フォルダ構成”- メモリフォルダ:
<project>/UserSettings/Cluewren/(notes.md、lib.cs、およびruns/<yyyyMMdd-HHmmss>/を保持)。 - テキストエクスポートフォルダ:
<project>/Library/CluewrenCodex/(テキスト化されたプロジェクト情報を保持。まずsummary.txt、続いてscenes/、prefabs/、data/、scripts.txt、build_scenes.txt、およびアクションマップを含むinput/)。
Kitおよびプレイテストの注意事項
Section titled “Kitおよびプレイテストの注意事項”- オブジェクトのパス: GameObjectは
<scene>:/<root>/<child>の形式で指定します(例:Main:/Level/Door)。/で始まるパスは読み込まれているすべてのシーンを検索します。同一親ノード配下で同名のオブジェクトには連番が付きます(Coin、Coin@1、Coin@2)。コンポーネントは<object path>|<Type>の形式です(例:Main:/Player|PlayerMover)。静的型はtype:<Full.Name>、または名前が一意であれば短い名前で参照します。 - オブジェクトの検索:
game.Actors("Door")は該当コンポーネント(インターフェースやサブクラスを含む)を持つGameObjectを返します。game.AllActors()はシーン内のオブジェクトを一覧表示します。game.Named("door")は名前で検索します。非アクティブなオブジェクトはgame.Request("find", ...)で検索できます。 - 読み取りと呼び出し:
game.Get、game.Props、game.Call、game.Describeを使用します。Unity固有の座標はメートル単位(X: 右、Y: 上、Z: 前)です。ネイティブ座標とKitの座標フレームの変換にはgame.ToKit(value)およびgame.ToNative(vec)を使用します。 - プレイヤーの検出:
Playerタグが付いたオブジェクト、次にPlayerInputを持つオブジェクト、次にCharacterControllerを持つオブジェクトの順で検索します。Movement(game)はCharacterControllerのパラメータや移動スクリプトのフィールド(walkSpeed、jumpSpeedなど)を読み取ります。 - 入力: Input Systemを通じて仮想ハードウェアデバイス(キーボード、マウス、ゲームパッド)をエミュレートします。標準のキー名(
W、SpaceBar、E、LeftShift、LeftMouseButton、MouseX、MouseYなど)またはアクション名(game.Press("Player/Jump"),game.Hold("Player/Move", new[] { 0.0, 1.0 }))を使用します。マウスによる視点移動は、あらかじめgame.CalibrateLook()を1回呼び出した後、game.TurnまたはLookAtで行います。 - UI: スクリーン空間キャンバスのテキスト(uGUI Text、TextMeshPro)およびUI Toolkit要素は
game.Screen()で読み取れます。操作可能な要素はgame.Ui()で一覧化され、game.UiAct()でクリックできます。IMGUI(OnGUI)は読み取りやクリックに対応していません。 - セッション: エディタにおけるプレイテストセッションは再生モード(Play mode)です。
game.Restart()は開始時のシーンを再読み込みします。DontDestroyOnLoadで保持されているオブジェクトはシーン再読み込み後も破棄されません。 game.View()の除外項目: Unityプラグインではheld、openings、ways_up、point_blank、laneが省略されています。ways_upがないため、WalkToはスロープや階段を自力で登る経路を算出できません。必要に応じてgame.Locsから中継点の座標を指定してください。