GGua 日本語リファレンスEnglishGitHub ↗
英語版が正式な参照です。内容に差異がある場合は、英語版を優先してください。
DOCS / UNITY

Unity API・仕様

Unity向けパッケージの構成、利用できる公開型、対応UIと操作、拡張ポイントを調べるためのリファレンスです。

パッケージの選び方

パッケージ責務target
com.link1345.guaUnityプロジェクトへ導入するUPMパッケージ。自動起動、UI収集、操作、screenshotに対応Unity 6000.0+
Gua.Runtime別のengine adapterを実装するときに使う共有runtime APInet10.0 / netstandard2.1
Gua.Testing.Unity外部.NETテストからUnity Editor/Playerをbuild・起動・接続net10.0 / netstandard2.1
Gua.Testinglocator、assertion、remote接続、screenshotのengine共通テストAPIengine非依存
Gua.Testing.VisualUnityを含む任意のGua contextでPNG baseline比較と差分artifactを追加net10.0 / netstandard2.1
Gua.Testing.RecordingUnityを含む任意のGua contextでSemantic操作を記録・Replaynet10.0 / netstandard2.1

Unity公開型

公開契約
GuaUnityRuntime自動起動するMonoBehaviourEnsureStarted()と手動frame用RunFrame()
GuaIduGUI/TMP GameObjectへ安定したValueを与える任意Component
GuaScreen現在の論理screen名をValueで上書き。無ければactive scene名/path
IGuaUnityControlAdapter独自uGUI系ControlのTryDescribe/TryApply
GuaUnityAdapterRegistryRegister(adapter)でControlアダプターを追加
GuaUnityKeyEventprotocol key/modifierをUnity Eventへ変換

Gua.Runtime公開面

通常のUnity利用ではUPMパッケージがこの層を管理するため、直接呼び出す必要はありません。独自のengine adapterを作る場合、GuaRuntimeがnative runtimeを生成・所有し、Dispose()でbridgeとnative handleを破棄します。主要memberはStartInspectorBridge/StopInspectorBridgeSetAdapterVersionBeginFrame/EndFrameRegisterNodeTryConsumeAction/EmitActionResultTryConsumeScreenshotRequest/CompleteScreenshotAddLogGetUiTreeJsonGetVersionJsonです。

テストホスト公開型

型 / member意味
UnityPlayerBuilder.Build指定sceneからWindows64 Mono Playerをbatch build
UnitySceneTestHost.LoadPlayerheadless Playerを起動
LoadRenderedPlayer描画付きPlayerを起動
LoadEditorStartPlayMode editor commandでsceneを開始
BuildAndLoadPlayerbuildと起動を一括実行
Context / RemoteContext共通IGuaContext / Unity WebSocket context
CaptureScreenshotframe sequence以後のon-demand PNGを待機
CreateDiagnosticsSession共通artifactにUnity log/process metadataを追加

UI写像

roleUI ToolkituGUI / TMP主なaction
buttonButtonButton / TMP label付きButtonclick, focus
checkboxToggleToggleclick, focus, set_checked
textboxTextFieldInputField / TMP_InputFieldfocus, set_value, press_key
sliderSlider / SliderIntSliderfocus, set_value
comboboxDropdownFieldDropdown / TMP_Dropdownfocus, select
list / listitemListViewと全itemsSource標準自動写像なしfocus, select, scroll
tablist / tabTabView / Tab標準自動写像なしselect
scrollareaScrollViewScrollRectscroll
text / panelLabel / その他Text・TMP_Text / その他観測のみ

各frameでrolelabeltext/valuevisibleenabledfocused、checkboxのchecked、ListView itemのselected、slider range、parentId、boundsを再収集します。ListViewはvirtualizeされて画面外のitemもnodeを作りますが、未realize itemはvisible: falseかつbounds 0になります。

操作と完了通知

外部requestは対象roleが宣言するactionだけ消費されます。Unityの同期listenerが戻った後、同じrequestIdの結果eventを返します。coroutine、async void、次frameの完了までは待ちません。不正な数値・選択肢・keyはinvalid_value、実装していない組み合わせはunsupportedです。例外はruntime logとUnity Consoleへ出し、失敗結果へ変換します。

press_key modifier bitは1=Shift、2=Alt、4=Control、8=Commandです。EnterEscArrow*はUnityのKeyCode名へ正規化されます。global key requestは現在focus中のtextboxへ配送されます。

エンジン共通仕様

  • version_v1に任意のadapterVersions mapを追加。UnityはUPM metadataではなく、読み込んだnative runtime versionを{"unity":"<runtime version>"}として報告します。
  • godotPluginVersionは互換性のため残り、Godot以外ではnullです。
  • 全adapterのbounds座標を「物理viewport pixel、左上原点、右/下が正、NaN/Infinity禁止」と明文化しました。
  • GuaWebSocketContext、remote tree、captured screenshotはGua.Testingから利用できます。
  • native C ABIへgua_runtime_set_adapter_version(runtime, adapter, version)を追加。既存ABIは削除していません。
  • screenshot要求のconsume後にsession resetされた場合はstale_sessionで完了し、古い画像を新sessionへ公開しません。

ライフサイクルと所有権

BeforeSceneLoadでbootstrap driverとruntimeの2つの永続GameObjectを生成し、driverのLateUpdate()がbegin → UI収集 → end → action配送 → screenshot要求を進めます。runtime破棄時はbridgeを停止してnative handleをdisposeします。UPM artifactはGua.Core.dllGua.Runtime.dllと依存assembly、gua.dllgua_runtime.dllを同梱します。

利用上の注意

  • 外部から整数sliderの値を変更する必要がある画面では、現在はSliderIntではなくSliderを使用してください。SliderIntの状態は観測できます。
  • Toggleのclickは値の変更として配送されます。独自処理はpointer eventだけでなくvalue/change listenerでも受け取れるようにしてください。
  • 独自Controlを登録する場合は、roleに対応するactionをTryApplyへ実装してください。観測だけのControlでは操作用actionを持たないroleを選べます。
  • Unityを並列起動するテストでは各hostが動的portを使います。同じportを固定利用する別processとの同時実行は避けてください。