2017-11-20 28 views
0

私はUnity用のデバッグメニューAPIを作成していますが、ContextMenu属性の動作の一部を複製しようとしています。この属性は、この特定の属性で装飾された関数を呼び出す

[ContextMenu("Debug Function Name")]

これは、コンポーネントのドロップダウンリストにデバッグ項目を入れて、それをクリックすると属性が装飾されたメソッドを実行するように見えます。私の属性のコンストラクタで、名前とメソッドをデバッグ・マネージャに渡してデバッグ・メニューを構築したいと思います。

Unityがこれをどうしているのか分かりません。私の知る限り、属性クラスはメソッドに関する情報を得ることができませんので、リフレクションを使用して、その属性を持つ実行中のアセンブリ内のクラスを見つける唯一のオプションはここにありますか?

+1

*(...)は、リフレクションを使用して、その属性を持つ実行アセンブリ内のクラスを見つけるための唯一のオプションですか?答えは「はい」と言います。 – InBetween

答えて

0

ここで、リフレクションを使用して実行アソシエーション内でそのアトリビュートが関連付けられているクラスを見つける唯一のオプションはありますか?

はい。 Unityはすべての読み込まれたアセンブリをループします - >すべての型 - >すべてのメソッド - > [ContextMenu]属性を持つ場合 - > MethodInfo +属性で処理します。

属性はターゲットについては何も知らないが、属性を取得する唯一の方法はターゲットから取得することで、どちらの方法でもアクセスできます。

+0

と同じように見えます。ありがとう –

関連する問題