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