2017-11-20 8 views
0

저는 Unity 용 디버그 메뉴 API를 작성 중이며 ContextMenu 특성의 일부 동작을 복제하려고합니다. 이 속성은이특정 속성으로 장식 된 함수 호출

[ContextMenu("Debug Function Name")]

이 구성 요소에 대한 드롭 다운 목록에 디버그 항목을두고 그것을 클릭하면 속성이 장식 된 방법을 실행하는 것 같다. 내 속성의 생성자에서 이름과 메소드를 디버그 관리자에게 전달하여 디버그 메뉴를 생성하려고합니다.

Unity가 어떻게 이런 일을하는지 알 수 없습니다. 지금까지 내가 아는 한, 속성 클래스는 메서드에 대한 정보를 얻을 수 없으므로 리플렉션을 사용하여 실행중인 어셈블리에서 해당 특성이 연결된 클래스를 찾기위한 유일한 옵션은 여기에 있습니까?

+1

* 애트리뷰트가 첨부 된 실행중인 어셈블리에서 클래스를 찾기 위해 리플렉션을 사용하는 유일한 방법은 여기 (...)입니다. * 대답은 '예'입니다. – InBetween

답변

0

리트리렉션을 사용하여 실행중인 어셈블리에서 해당 속성이 연결된 클래스를 찾는 유일한 옵션은 여기에 있습니까?

예. 유니티는로드 된 모든 어셈블리를 통해 반복합니다 -> 모든 유형 -> 모든 메소드 -> [ContextMenu] 속성이있는 경우 -> MethodInfo + 속성을 사용합니다.

속성은 대상에 대해 아무 것도 모릅니다. 속성을 얻는 유일한 방법은 대상에서 가져 오는 것이므로 어쨌든 두 속성에 모두 액세스 할 수 있습니다.

+0

많은 것으로 나타났습니다. 감사 –