1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| using UnityEditor; using UnityEngine;
public class OfflineDataEditor { [MenuItem("Assets/离线数据/生成特效离线数据")] public static void AssetCreateEffectOfflineData() { GameObject[] objects = Selection.gameObjects; for (int i = 0; i < objects.Length; i++) { EditorUtility.DisplayProgressBar("添加特效离线数据", "正在修改:" + objects[i] + "……", 1.0f / objects.Length * i); CreateEffectOfflineData(objects[i]); } EditorUtility.ClearProgressBar(); } [MenuItem("离线数据/生成所有特效prefab离线数据")] public static void AllCreateEffectData() { string[] allStr = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/GameData/Prefabs/Effect" }); for (int i = 0; i < allStr.Length; i++) { string prefabPath = AssetDatabase.GUIDToAssetPath(allStr[i]); EditorUtility.DisplayProgressBar("添加特效离线数据", "正在扫描路径:" + prefabPath + "……", 1.0f / allStr.Length * i); GameObject obj = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath); if (obj == null) { continue; } CreateEffectOfflineData(obj); } Debug.Log("特效离线数据全部生成完毕!"); EditorUtility.ClearProgressBar(); }
public static void CreateEffectOfflineData(GameObject obj) { EffectOfflineData effectData = obj.GetComponent<EffectOfflineData>(); if (effectData == null) { effectData = obj.AddComponent<EffectOfflineData>(); } effectData.BindData(); EditorUtility.SetDirty(obj); Debug.Log("修改了" + obj.name + " 特效prefab"); Resources.UnloadUnusedAssets(); AssetDatabase.Refresh(); } }
|