最初の投稿
ご質問に質問を返すことをお許しください。
Q.1
おやりになりたいことは?
- 動的なメソッドを定義したい
- 静的なメソッドを動的に命名したい
- メソッド名の文字列を使用して、メソッドを呼び出したい
- 呼び出すメソッドを動的に指定したい (他のメソッドへの引数にするなど)
- その他 (具体的に)
Q.2
どのような使われ方を想定されているのかお尋ねしても良いでしょうか?
追記
上記「3」を前提とします。
MonoBehaviour.Invoke を使う
Invoke
を使うと、文字列でメソッドを呼び出せます。
ただし、本来は遅延実行させるためのものですので、最速でも「次のフレーム」での実行になります。
MonoBehaviour.StartCoroutine を使う
StartCoroutine
使う場合も、文字列でメソッドを呼び出せます。
ただし、こちらも、本来は別の用途のためのものですので、様々な制約が生じます。
MethodInfo.Invoke を使う
public class SampleClass {
public int SampleMethod (int i) {
return i;
}
}
と定義されているとして、
var sampleClass = new SampleClass ();
var methodInfo = (sampleClass.GetType ()).GetMethod ("SampleMethod");
var returnedValue = (int) methodInfo.Invoke(sampleClass, new object[] { 123, } );
のように呼び出すことができます。
1Like