[Unity編輯器]AnimatorOverrideController清除多餘的動畫剪輯

[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[] { });
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章