[Unity編輯器]AnimatorOverrideController清除多餘的動畫剪輯
備忘用
// 目標:
// 清除AnimatorOverrideController裏多餘的動畫剪輯數據
// 原因:
// 近來在做動畫相關的編輯器擴展,
// 通過代碼刪掉AnimatorController的某個動畫剪輯後,
// 相關的AnimatorOverrideController的引用會丟失,
// 這些丟失了原動畫引用的數據並不會自動移除,
// 除非手動重新設置runtimeAnimatorController,
// 手動是不可能的,
// 話說,感覺官方總喜歡把好用的方法藏起來,
// 這裏只好用反射解決了
// 函數:
static void PerformOverrideClipListCleanup(AnimatorOverrideController overrideController) {
var assembly = typeof(AnimatorOverrideController).Assembly;
var type = assembly.GetType("UnityEngine.AnimatorOverrideController");
var method = type.GetMethod("PerformOverrideClipListCleanup",
BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic);
method.Invoke(overrideController, new object[] { });
}