aboutsummaryrefslogtreecommitdiff
path: root/Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs
diff options
context:
space:
mode:
authorSmallFox <2806143047@qq.com>2026-05-10 11:16:18 +0800
committerSmallFox <2806143047@qq.com>2026-05-10 11:16:18 +0800
commita9cef4bb0b902e3ec2d3b5510e3de4e885f2be90 (patch)
tree05bcb55df0ffc5be1f4d02c2cba6c5ad831614cd /Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs
parentd9fac68e24306673ff27e9f1c909a6f600d8dee0 (diff)
feat:合并伤害体积
Diffstat (limited to 'Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs')
-rw-r--r--Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs101
1 files changed, 101 insertions, 0 deletions
diff --git a/Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs b/Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs
new file mode 100644
index 0000000..acf0388
--- /dev/null
+++ b/Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs
@@ -0,0 +1,101 @@
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEngine;
+
+namespace DamageVolumeSystem.Editor
+{
+ [CustomEditor(typeof(DamageHost))]
+ public class DamageHostEditor : UnityEditor.Editor
+ {
+ /*
+ * Editor page created by Mountools
+ * Author : WangSoul
+ * Date : 2026 / 05 / 09 - 15:26:18
+ */
+
+ public DamageHost damageHost;
+
+ private void OnEnable()
+ {
+ damageHost = (DamageHost) target;
+ }
+
+ private void DrawDamageHostEditor()
+ {
+ EditorGUILayout.HelpBox("这玩意用来绑在产生伤害或接收伤害的物体上的,绑上去就能接收事件了,但是具体伤害事件还得单独接入,不同物体有不同的接收伤害模式。", MessageType.Info);
+
+ EditorGUILayout.LabelField("伤害组 ID,同 ID 的物体不会互相伤害");
+ DrawGroupButtons(ref damageHost.group, 12);
+
+ EditorGUILayout.Space();
+
+ EditorGUILayout.HelpBox($"当前组内发现 {damageHost.generators.Count} 个伤害生成器,修改了一定要记得重新搜寻", MessageType.Info);
+ EditorGUILayout.BeginHorizontal();
+ {
+ if (GUILayout.Button("搜寻"))
+ {
+ damageHost.generators.Clear();
+ foreach (var generator in damageHost.gameObject.GetComponentsInChildren<DamageGenerator>())
+ {
+ damageHost.generators.Add(generator);
+
+ generator.binding = damageHost;
+ EditorUtility.SetDirty(generator);
+ }
+ }
+ }
+ EditorGUILayout.EndHorizontal();;
+
+ EditorGUILayout.Space();
+
+ EditorGUILayout.HelpBox("这玩意是伤害事件,当有伤害发生时会执行,记得绑定", MessageType.Info);
+ }
+
+ private static void DrawGroupButtons(ref int groupValue, int buttonCount, int columns = 4)
+ {
+ for (int i = 0; i < buttonCount; i += columns)
+ {
+ EditorGUILayout.BeginHorizontal();
+ for (int j = 0; j < columns && i + j < buttonCount; j++)
+ {
+ int buttonValue = i + j;
+ var color = GUI.backgroundColor;
+ GUI.backgroundColor = (groupValue == buttonValue) ? new Color(0.51f, 0.69f, 1f) : color;
+ if (GUILayout.Button(buttonValue.ToString(), GUILayout.Width(24)))
+ {
+ groupValue = buttonValue;
+ }
+
+ GUI.backgroundColor = color;
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+
+ #region _
+
+ public override void OnInspectorGUI()
+ {
+ Undo.RecordObject(damageHost, "Edit DamageHost");
+ EditorGUI.BeginChangeCheck();
+
+ DrawDamageHostEditor();
+ DrawDefaultInspector();
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ EditorUtility.SetDirty(damageHost);
+ Undo.FlushUndoRecordObjects();
+ serializedObject.ApplyModifiedProperties();
+ }
+ }
+
+ private bool Property(string label, string propertyName, params GUILayoutOption[] options)
+ {
+ return EditorGUILayout.PropertyField(serializedObject.FindProperty(propertyName), new GUIContent(label), options);
+ }
+
+ #endregion
+ }
+}
+#endif \ No newline at end of file