エディタウィンドウからMethodInfoをスクリプトに保存しようとしています。メソッド情報を覚えておくスクリプトを作成するとうまくいきますが、Unityが再コンパイルされるたびに(Run-Time、スクリプトが変更されたか、または単一性が再起動されたとき)、MethodInfo変数はnullにリセットされます。私はそれを保存するクラスをシリアライズし、MethodInfoをSerializedFieldにすることを試みました。Unity EditorWindowのMethodInfo変数をComponentに保存すると、コンパイル時にvarがリセットされます
正確にはどうなるのでしょうか?私はGameObjectに属するComponentとそのコンポーネントに属するMethodInfoを選択します。次に、GameObject、Component & MethodInfoの変数を持つスクリプトを含む新しいGameObjectを作成します。それらの変数を選択した変数に設定します。これまではこれまで通りです。ユニティが再びコンパイルされると、GameObjectとComponentは保存されますが、MethodInfoはnullに変わります。
任意の助けいただければ幸いです。
回答をいただきありがとうございます。私はまさに私がやったことと同じように考えました。私はそれらの醜いハックが好きではありませんが、クリーナーソリューションを期待していました。 –
Reflectionでメソッドを呼び出す場合は、 Reflectionの機能は唯一合理的なことです。 UnityはUnityEventを実装するために全く同じ仕組みを使います(Unity UIで使用されています)。多分彼らはあなたが探しているものでしょうか?そうでない場合は、達成しようとしていることについてもう少し詳しく説明してください。そうすれば、人々は代替案を提案することができます。 –