using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif [ExecuteAlways] public class ActiveGroup : MonoBehaviour { public List 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 }