aboutsummaryrefslogtreecommitdiff
path: root/Assets/Scripts/ActiveGroup.cs
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2026-05-30 19:35:16 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2026-05-30 19:35:16 +0800
commit7735b716401f630697d5b02910d50dbf8f3416af (patch)
tree52d23e7e0434a569bbafdfca6ad196e3ef24af3f /Assets/Scripts/ActiveGroup.cs
parent4408cc53e044a9c649572991a764f46d247c67bf (diff)
正在编写动态场景加载
Diffstat (limited to 'Assets/Scripts/ActiveGroup.cs')
-rw-r--r--Assets/Scripts/ActiveGroup.cs52
1 files changed, 52 insertions, 0 deletions
diff --git a/Assets/Scripts/ActiveGroup.cs b/Assets/Scripts/ActiveGroup.cs
new file mode 100644
index 0000000..c2e32d0
--- /dev/null
+++ b/Assets/Scripts/ActiveGroup.cs
@@ -0,0 +1,52 @@
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+[ExecuteAlways]
+public class ActiveGroup : MonoBehaviour
+{
+ public List<GameObject> members = new();
+
+ private void Awake()
+ {
+ foreach (var member in members)
+ member.SetActive(gameObject.activeSelf);
+
+ MarkDirty();
+ }
+
+ private void OnEnable()
+ {
+ foreach (var member in members)
+ member.SetActive(true);
+
+ MarkDirty();
+ }
+
+ private void OnDisable()
+ {
+ foreach (var member in members)
+ member.SetActive(false);
+
+ MarkDirty();
+ }
+
+#if UNITY_EDITOR
+ private void OnValidate()
+ {
+ if (!Application.isPlaying)
+ EditorUtility.SetDirty(this);
+ }
+
+ private void MarkDirty()
+ {
+ if (!Application.isPlaying)
+ EditorUtility.SetDirty(this);
+ }
+#else
+ // 非编辑器平台下,MarkDirty为空方法
+ private void MarkDirty() { }
+#endif
+} \ No newline at end of file