using Stary.Evo.Editor; using UnityEditor; using UnityEngine; namespace Main { [CustomEditor(typeof(PointGatherData))] public class PointGatherDataEditor : UnityEditor.Editor { public override void OnInspectorGUI() { serializedObject.Update(); base.OnInspectorGUI(); PointGatherData pointGatherData = target as PointGatherData; if (GUILayout.Button("一键生成坐标数据")) { ZoneController[] zoneControllers = FindObjectsOfType(true); PointController[] pointControllers = FindObjectsOfType(true); for (int i = 0; i < pointGatherData.ZoneDatas.Count; i++) { ZoneData zoneData = pointGatherData.ZoneDatas[i]; foreach (var zoneController in zoneControllers) { if (zoneController.name == zoneData.name) { zoneData.position = zoneController.transform.localPosition; zoneData.rotation = zoneController.transform.localEulerAngles; zoneData.scale = zoneController.transform.localScale; } } for (int j = 0; j < zoneData.pointDatas.Count; j++) { PointData pointData = zoneData.pointDatas[j]; foreach (var pointController in pointControllers) { if (pointController.name == pointData.name) { pointData.position = pointController.transform.localPosition; pointData.rotation = pointController.transform.localEulerAngles; pointData.scale = pointController.transform.localScale; } } } } EditorUtility.SetDirty(pointGatherData); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } } } }