关键点主要是对场景中Prefab得移除组件得处理,以及依赖Animation组件得删除
1. 通过 PrefabUtility.GetCorrespondingObjectFromSource 取得预制体对象
2. 通过 AssetDatabase.GetAssetPath 取得预制体路径
3. 加载预制体,DestroyImmediate删除预制体组件,并保存
4. 有些预制体并没有空Animation组件,但是引用预制体,并给预制体增加空Animation组件
5. 有些会用到 DelayAnimationPlay 组件,以来于Animation组件,但是删除Animation组件会失败,优先删除DelayAnimationPlay 组件
using System.Collections.Generic;
using System.Linq;
using TLStudio;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace ProjectS.Editor
{
public class CheckSceneNullAnimation : EditorWindow
{
public static Dictionary<string, int> info = new Dictionary<string, int>();
public bool openState = false;
//string bugReporterName = "";
//string description = "";
GameObject buggyGameObject;
CheckSceneNullAnimation()
{
this.titleContent = new GUIContent("删除场景中空Animation组件");
}

本文介绍了如何优化Unity场景,批量处理Prefab,删除空的Animation组件。通过PrefabUtility获取预制体对象,利用AssetDatabase获取预制体路径,然后加载并删除组件,同时处理了依赖于Animation组件的情况,包括处理带有DelayAnimationPlay组件的特殊情况。
最低0.47元/天 解锁文章
3566

被折叠的 条评论
为什么被折叠?



