diff options
| author | SmallFox <2806143047@qq.com> | 2026-05-10 11:16:18 +0800 |
|---|---|---|
| committer | SmallFox <2806143047@qq.com> | 2026-05-10 11:16:18 +0800 |
| commit | a9cef4bb0b902e3ec2d3b5510e3de4e885f2be90 (patch) | |
| tree | 05bcb55df0ffc5be1f4d02c2cba6c5ad831614cd /Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs | |
| parent | d9fac68e24306673ff27e9f1c909a6f600d8dee0 (diff) | |
feat:合并伤害体积
Diffstat (limited to 'Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs')
| -rw-r--r-- | Assets/Scripts/DamageVolumeSystem/Editor/DamageHostEditor.cs | 101 |
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 |
