using System; using UnityEngine; namespace AlicizaX.UI { /// /// GameObject 激活状态控制 /// 控制对象的显示/隐藏 /// [Serializable] [ControlerStateName("GameObject/Active")] [ControlerStateAttachType(true)] public class GameObjectActiveState : ControllerStateBase { [SerializeField] private bool _active = true; [HideInInspector] [SerializeField] private bool _defaultActive = true; public override void Init(UXControllerStateRecorder recorder) { if (recorder != null && recorder.gameObject != null) { _defaultActive = recorder.gameObject.activeSelf; } } public override void Execute(UXControllerStateRecorder recorder, int entryIndex, int selectionIndex) { if (recorder != null && recorder.gameObject != null) { bool shouldBeActive = (entryIndex == selectionIndex) ? _active : _defaultActive; recorder.gameObject.SetActive(shouldBeActive); } } public override bool Valid(UXControllerStateRecorder recorder) { return recorder != null && recorder.gameObject != null; } public override string GetDescription() { return $"匹配时: {(_active ? "显示" : "隐藏")}, 默认: {(_defaultActive ? "显示" : "隐藏")}"; } } }