2018的Prefab模块被魔改了,老师的这种方式会出现断言错误,可以通过下面的方式进行加载
[MenuItem("离线数据/生成所有UI离线数据")]
public static void AllUICreate()
{
string[] allPath = AssetDatabase.FindAssets("t:Prefab", new[] { "Assets/GameData/Prefabs/UGUI" });
for (int i = 0; i < allPath.Length; i++)
{
//转明文路径
string path = AssetDatabase.GUIDToAssetPath(allPath[i]);
EditorUtility.DisplayProgressBar("生成所有UI离线数据", "Prefab:" + path, i * 1.0f / allPath.Length);
//1.新版获得对象
GameObject obj = PrefabUtility.LoadPrefabContents(path);
if (obj == null)
{
continue;
}
//调用修改数据的方法
CreateUIData(obj);
//2.新版本需要保存并释放引用
PrefabUtility.SaveAsPrefabAsset(obj, path);
PrefabUtility.UnloadPrefabContents(obj);
}
Debug.Log("所有UI离线数据生成成功");
EditorUtility.ClearProgressBar();
}