読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

エディター操作で登録するのが面倒なボタンのクリックイベントを、スクリプトで登録する

f:id:tsubaki_t1:20150601002031p:plain

Unityのボタン等のイベントをシーン内に登録/保持するには、UnityEditor.EventsのUnityEventToolsを使用します。

エディタ上でメソッドを登録するメリットは3つです。

  1. 実行時にイベントの登録処理を必要としない
  2. EventListenerの引数とマッチしないメソッドも登録できる
  3. エディタで何のメソッドが登録されるか確認出来る

但し、名前でイベントを登録している関係上、登録しているメソッド名の変更には注意が必要です。またイベントを2重に登録出来てしまうのでイベント登録時は念のためUnityEditor.Events.UnityEventTools.RemovePersistentListenerでイベントを事前に削除しておくと良さそうです。

ついでにExecuteEditModeでOnDestroy時にイベント削除しておけば、ボタンのイベントを削除する手間も省けます。

gist.github.com

f:id:tsubaki_t1:20150601005333g:plain

作業効率的にはGUIで操作したほうが早く作業完了出来ると思いますが、プログラマ的にはこっちのほうが性に合ってる気がします。登録の自動化等も出来るので。

関連

Resetについて。別にContextMenuでも良い。

MonoBehaviour.Reset()とは - プログラミングとかブログ

コンポーネント追加時にパラメータも設定する - テラシュールブログ

知っておくと少し幸せになる最低限のエディタ拡張 - テラシュールブログ

ボタンのクリックイベントについて

Unityの新GUI、UGUIのイベント制御について - テラシュールブログ

EditorExtensionsについて。

UnityのAttribute(属性)についてまとめてメモる。 - テラシュールブログ