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

Unity StartCoroutineなどで引数渡す時、Stringを使わずにメソッドを渡す方法

今回は、以下の記事の処理を継承を行うことでミスをなくす。
Unity - StartCoroutineなどで、引数に渡すメソッド名をうっかり変えそびれるのを防ぐ方法 - Qiita

ArgumentChangeStringToMethod.cs
gist.github.com

サンプルスクリプト
gist.github.com

以下のようにすることで、Stringを利用せずにメソッドを渡すことができる。
これにより、コードの変更でメソッド名が変更した時対応できる。

Invoke (CallTestInvoke, 1);
InvokeRepeating (CallTestInvoke, 2, 2);

SendMessage (CallTestSendMessage);
SendMessage (CallTestSendMessage, 1);
SendMessage (CallTestSendMessage, SendMessageOptions.DontRequireReceiver);
SendMessage (CallTestSendMessage, SendMessageOptions.RequireReceiver);

BroadcastMessage (CallTestSendMessage);
BroadcastMessage (CallTestSendMessage, 1);
BroadcastMessage (CallTestSendMessage, SendMessageOptions.DontRequireReceiver);
BroadcastMessage (CallTestSendMessage, SendMessageOptions.RequireReceiver);

実行結果
f:id:suakijob:20150509023104p:plain

参考
Unity - StartCoroutineなどで、引数に渡すメソッド名をうっかり変えそびれるのを防ぐ方法 - Qiita
安井のブログ: [Unity]多重継承について
C#入門/継承 - WisdomSoft
Unity:外部からオブジェクトグループの関数をまとめて呼び出したい | ヤマヤタケシのブログ