開発者向け 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取得