using System; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; namespace Thousandto.Package { public class CheckZValue { private const string SOURCE_PATH = "Assets/GameAssets/Resources/GameUI/Form"; public static void Check() { EditorUtility.DisplayProgressBar("检查transform的Z值", "", 0); var files = GetUIPrefabs(); var len = (float)files.Length; for(int i = 0; i < len; ++i) { EditorUtility.DisplayProgressBar("检查transform的Z值", Path.GetFileName(files[i]), i / len); var go = AssetDatabase.LoadAssetAtPath(files[i]); if (go == null) continue; bool isChecked = false; CheckTransform(go.transform, (_trans) => { if (_trans.GetComponent() != null) return; if (_trans.localPosition.z != 0) { var temp = _trans.localPosition; temp.z = 0; _trans.localPosition = temp; isChecked = true; } }); if (isChecked) UnityEngine.Debug.LogError("有改动的UI:" + Path.GetFileName(files[i])); } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.ClearProgressBar(); } private static string[] GetUIPrefabs() { var files = Directory.GetFiles(SOURCE_PATH, "*.prefab", SearchOption.AllDirectories); return files; } private static void CheckTransform(Transform trans, Action action) { var count = trans.childCount; for(int i = 0; i < count; ++i) { var child = trans.GetChild(i); if (action != null) action(child); CheckTransform(child, action); } } } }