Skip to content

개발자용 API ​

패키지 내부에서 사용하는 범용 클래스는 외부에서도 이용할 수 있습니다.

ReflectionDelegateFactory ​

Unity 내부 API에 대한 고속 액세스 델리게이트를 생성하는 팩토리입니다. Expression Tree 기반으로, 메서드 / 프로퍼티 accessor (get_ / set_ 자동 폴백) / 필드 읽기·쓰기 / 생성자 호출을 지원합니다.

csharp
// インスタンスメソッド
var del = ReflectionDelegateFactory.Create<Action<object>>(
    "UnityEditor.Graphs.ParameterControllerView", "DeleteParameter");

// プロパティ getter
var getter = ReflectionDelegateFactory.Create<Func<object, AnimatorController>>(
    "UnityEditor.Graphs.IAnimatorControllerEditor", "animatorController");

// 静的メソッド (out 引数 OK)
public delegate bool TryGetFolderPathDelegate(out string path);
var f = ReflectionDelegateFactory.Create<TryGetFolderPathDelegate>(
    "UnityEditor.ProjectWindowUtil", "TryGetActiveFolderPath");

// フィールド getter / setter
var fg = ReflectionDelegateFactory.CreateFieldGetter<object>(
    "UnityEditor.Graphs.ParameterControllerView", "m_Host");
var fs = ReflectionDelegateFactory.CreateFieldSetter<int>(
    "UnityEditor.Graphs.LayerControllerView", "m_SelectedIndex");

// 引数なしコンストラクタ
var ctor = ReflectionDelegateFactory.CreateConstructor<Func<object>>(
    "UnityEditor.Graphs.LayerControllerView");
var instance = ctor();

찾지 못했을 때

Create<TDelegate>는 멤버를 찾지 못하면 Member not found: <member> in <class>를 LogError로 출력합니다. Unity 버전 차이로 갑자기 null이 되었을 때 조사의 실마리가 됩니다.

생성 결과는 캐시되지 않습니다

핫 패스 (매 프레임 등)에서 사용할 경우에는 호출하는 쪽에서 생성된 델리게이트를 보관해 두세요. 미지원: 제네릭 메서드의 인스턴스화, 인스턴스 메서드의 out / ref 인자 (정적 메서드는 지원), 같은 이름의 void 메서드와 setter가 충돌할 때의 명시적 지정.

New Hierarchy 컬럼 등록 API ​

[SCEHierarchyColumn] 속성으로 New Hierarchy 창에 커스텀 컬럼을 추가할 수 있습니다.

확장 메서드 ​

클래스주요 용도
AnimatorExtensionsGetAllStates / GetAllStatePairs / GetAllTransitions / AddLayerEx / PasteLayer / CloneObject
ColorExtensionsHex → Color 변환 (HexToColor)
ComponentExtensions컴포넌트 참조 검사 (IsComponentReferenced)
EditorWindowExtensionsGetDockAreaWindows / RepaintEditor / 확장 버전 GetWindow
GameObjectExtensions자손 컴포넌트 일괄 가져오기
GUIExtensionsToggleSafe / SliderSafe / Foldout / DrawHorizontalLine
ModularAvatarExtensionsGetParameterInfos / GetParameterBits
PathUtils절대 경로 ↔ Asset 경로 변환

기타 편리한 클래스 ​

  • InputKeyChecker — Editor 내 글로벌 키 입력 이벤트
  • ComponentPropertyWindowOpener — 임의의 컴포넌트를 단독 프로퍼티 창으로 열기
  • SearchComponentDropdown — AddComponentMenu 속성 기반의 계층적 컴포넌트 검색 UI
  • CallerUtils — 호출자의 Type 가져오기

MIT License