選択した列挙型に応じてこれらのメソッドを呼び出せるように、いくつかのクラスのメソッドを列挙型にリストしようとしています。ToString() と GetMethod(string) を使ってみましたが、うまくいきませんでした。デリゲートが列挙型のリストから呼び出すメソッドを動的に変更するより良い方法があれば、助けていただければ幸いです。私は C# に非常に慣れていません。また、メソッド ポインターを格納する別の方法があるかどうかも疑問に思っています。私はこれらのボードでリフレクションを調べましたが、キャストまたは列挙型からの割り当てのどちらにもあまり運がありませんでした。
public enum funcEnum { FirstFunction, SecondFunction };
public funcEnum eList;
public delegate void Del();
public Del myDel;
void Start() {
myDel = FirstFunction; //pre-compiled assignment
myDel(); //calls 'FirstFunction()' just fine
以下は実行時に変更される可能性がありますが、通常は Start() には含まれません。
eList = funcEnum.SecondFunction; //this could be changed during runtime
myDel = eList.ToString();
明らかなエラー、myDel がメソッドを探しています。列挙値を取得/変換してデリゲートに割り当てる方法がわかりません。割り当ての事前知識を持ってメソッドを呼び出そうとしています。基本的に、列挙リストにこのクラス内のメソッドの名前を含める必要があります。
myDel(); //doesn't work
}
public void FirstFunction() {
Debug.Log("First function called");
}
public void SecondFunction() {
Debug.Log("Second function called");
}