개발자용 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 창에 커스텀 컬럼을 추가할 수 있습니다.
확장 메서드
| 클래스 | 주요 용도 |
|---|---|
AnimatorExtensions | GetAllStates / GetAllStatePairs / GetAllTransitions / AddLayerEx / PasteLayer / CloneObject |
ColorExtensions | Hex → Color 변환 (HexToColor) |
ComponentExtensions | 컴포넌트 참조 검사 (IsComponentReferenced) |
EditorWindowExtensions | GetDockAreaWindows / RepaintEditor / 확장 버전 GetWindow |
GameObjectExtensions | 자손 컴포넌트 일괄 가져오기 |
GUIExtensions | ToggleSafe / SliderSafe / Foldout / DrawHorizontalLine |
ModularAvatarExtensions | GetParameterInfos / GetParameterBits |
PathUtils | 절대 경로 ↔ Asset 경로 변환 |
기타 편리한 클래스
InputKeyChecker— Editor 내 글로벌 키 입력 이벤트ComponentPropertyWindowOpener— 임의의 컴포넌트를 단독 프로퍼티 창으로 열기SearchComponentDropdown—AddComponentMenu속성 기반의 계층적 컴포넌트 검색 UICallerUtils— 호출자의Type가져오기