unity-event について
unity-event は、UnityEvent の永続リスナーを管理する Unity スキルモジュールです。Inspector でボタンや Toggle などのコールバックを設定する用途に向き、リスナーの確認、追加、変更、呼び出し、コピー、削除ができます。
主な機能
- 01コンポーネント上の UnityEvent を確認
- 02リスナーと件数の取得
- 03永続リスナーの追加・変更・削除
- 04リスナーの一括追加やコピー
- 05リスナー状態の設定と実行時呼び出し
活用シーン
- 01ボタンの永続コールバックを設定
- 02イベントが呼び出すメソッドを確認
- 03イベント間でリスナーをコピー
- 04実行時に UnityEvent を明示的に呼び出す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-eventインストール後、Claude Code で/unity-eventを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明からパラメーターを推測してスキルを呼び出そうとしている場合は、いったん停止してください。まずこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からパラメーター定義をすでに取得している場合は、そのまま dryRun に進めます。
トリガー
- Inspector で UnityEvents を接続する
- ボタンやトリガーのコールバックを接続する
- 永続リスナーをスクリプトで設定する
- 在 Inspector 里挂接 UnityEvent、连接按钮或触发器回调、脚本化持久监听
イベントスキル
UnityEvents(例:Button.onClick、Toggle.onValueChanged)の永続リスナーを確認および変更します。Inspector のイベントドロップスロットに表示されるリスナーと同じものです。
動作モード
- Approval:参照系スキル(
event_get_listeners/event_list_events/event_get_listener_count、ソースでSkillMode.SemiAutoとして指定)はそのまま実行されます。それ以外の変更/呼び出し系(event_add_listener/event_set_listener/event_set_listener_state/event_invoke/event_add_listener_batch/event_copy_listeners、SkillMode.FullAutoとして指定)はユーザーの grant が必要です。grant 後、サーバーが一度の処理で実行して結果を返します。 - Auto / Bypass:禁止リストによりブロックされていないスキルは、そのまま実行されます。
- このモジュールには削除系スキルが含まれます:
event_remove_listener、event_clear_listenersはSkillOperation.Deleteとして指定され、IsForbiddenInSemiにより静的にブロックされます。呼び出せるのは Bypass モード、または Allowlist に追加した場合のみです。 event_invokeは Play mode/runtime でのみ有効です。エディターのアイドル状態で実行した場合は、EditorAndRuntime リスナーのみがトリガーされます。event_add_listenerなどが書き込むのは永続リスナー(prefab/scene にシリアライズされるもの)であり、エディターで設定できます。
してはいけないこと(よくある誤った推測):
event_create/event_triggerは存在しません → UnityEvents はコンポーネントのソースコードで宣言されます。このモジュールではリスナーの接続のみを行いますevent_subscribeは存在しません →event_add_listenerを使用してくださいevent_removeは存在しません →event_remove_listenerを使用してくださいevent_add_listenerには、対象の正確なコンポーネント型とメソッド名が必要です
ルーティング:
- XR インタラクションイベントには、
xrモジュールのxr_add_interaction_eventを使用してください - C# イベントコードには、
scriptモジュールを使って記述してください
スキル
event_get_listeners
UnityEvent の永続リスナーを取得します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
| eventName | string | はい | - | イベントフィールド名(例:"onClick") |
戻り値: { success, gameObject, component, eventName, listenerCount, listeners }
event_add_listener
UnityEvent に永続リスナーを追加します(エディター実行時)。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | イベントを所有するコンポーネント |
| eventName | string | はい | - | イベントフィールド名(例:"onClick") |
| targetObjectName | string | はい | - | 呼び出すメソッドを持つ GameObject |
| targetComponentName | string | いいえ | null | 対象上のコンポーネント、またはオブジェクト自体を呼び出す場合は GameObject |
| methodName | string | はい | - | public メソッドまたは set_PropertyName |
| mode | string | いいえ | RuntimeOnly | Off、RuntimeOnly、または EditorAndRuntime |
| argType | string | いいえ | void | void、int、float、string、または bool |
| floatArg | float | いいえ | 0 | 静的な float 引数 |
| intArg | int | いいえ | 0 | 静的な int 引数 |
| stringArg | string | いいえ | null | 静的な string 引数 |
| boolArg | bool | いいえ | false | 静的な bool 引数 |
戻り値: { success, message, index, mode }
event_set_listener とは異なり、このスキルには object の argType はありません。標準の UnityEvent オーバーロードのみを使用できます。
event_remove_listener
インデックスを指定して永続リスナーを削除します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
| eventName | string | はい | - | イベントフィールド名 |
| index | int | いいえ | 0 | リスナーのインデックス |
戻り値: { success, remainingCount }
event_invoke
UnityEvent を明示的に呼び出します(ランタイムのみ)。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
| eventName | string | はい | - | イベントフィールド名 |
戻り値: { success, message }
event_clear_listeners
UnityEvent からすべての永続リスナーを削除します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
| eventName | string | はい | - | イベントフィールド名(例:"onClick") |
戻り値: { success, removed }
event_set_listener_state
リスナーの呼び出し状態(Off、RuntimeOnly、EditorAndRuntime)を設定します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
| eventName | string | はい | - | イベントフィールド名 |
| index | int | いいえ | 0 | リスナーのインデックス |
| state | string | いいえ | null | 呼び出し状態:"Off"、"RuntimeOnly"、または "EditorAndRuntime" |
戻り値: { success, index, state }
event_set_listener
指定したインデックスの永続リスナーを置き換えます。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | ソースコンポーネント名 |
| eventName | string | はい | - | イベントフィールド名 |
| index | int | いいえ | 0 | 置き換えるリスナーのインデックス |
| targetName | string | はい | - | 対象 GameObject 名 |
| targetInstanceId | int | いいえ | 0 | 対象 GameObject のインスタンス ID |
| targetPath | string | いいえ | null | 対象の階層パス |
| targetComponentName | string | いいえ | null | 対象コンポーネント名、または GameObject |
| methodName | string | はい | - | パブリックメソッド、または set_PropertyName |
| mode | string | いいえ | RuntimeOnly | Off、RuntimeOnly、または EditorAndRuntime |
| argType | string | いいえ | void | void、int、float、string、bool、object |
| floatArg | float | いいえ | 0 | 静的な float 引数 |
| intArg | int | いいえ | 0 | 静的な int 引数 |
| stringArg | string | いいえ | null | 静的な string 引数 |
| boolArg | bool | いいえ | false | 静的な bool 引数 |
| objectReferenceName | string | いいえ | null | シーンオブジェクト引数の名前 |
| objectReferenceInstanceId | string | いいえ | 0 | シーンオブジェクト引数のインスタンス ID |
| objectReferencePath | string | いいえ | null | シーンオブジェクト引数のパス |
| objectAssetPath | string | いいえ | null | プロジェクトアセット引数のパス |
| objectType | string | いいえ | null | オブジェクト引数のオブジェクト/コンポーネント型 |
戻り値: { success, index, target, targetType, method, state, argType }
event_list_events
コンポーネント上のすべての UnityEvent フィールドを一覧表示します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
戻り値: { success, component, count, events }
event_add_listener_batch
複数のリスナーを一度に追加します。items:{targetObjectName, targetComponentName, methodName} の JSON 配列です。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
| eventName | string | はい | - | イベントフィールド名 |
| items | string | はい | - | {targetObjectName, targetComponentName, methodName} の JSON 配列 |
戻り値: { success, added, total }
event_copy_listeners
あるイベントのリスナーを別のイベントにコピーします。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| sourceObject | string | はい | - | コピー元の GameObject 名 |
| sourceComponent | string | はい | - | コピー元のコンポーネント名 |
| sourceEvent | string | はい | - | コピー元のイベントフィールド名 |
| targetObject | string | はい | - | コピー先の GameObject 名 |
| targetComponent | string | はい | - | コピー先のコンポーネント名 |
| targetEvent | string | はい | - | コピー先のイベントフィールド名 |
戻り値: { success, copied }
event_get_listener_count
UnityEvent 上の永続リスナーの数を取得します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| componentName | string | はい | - | コンポーネント名 |
| eventName | string | はい | - | イベントフィールド名 |
戻り値: { success, count }
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。