using System.Collections.Generic; using UnityEngine; using Script.Gameplay.Connect; namespace Script.Gameplay.Facility { // 号码枚举类型 public enum NumberType { Zero, One, Two, Three, Four, Five, // Six, // Seven, // Eight, // Nine } // 号码槽 public class NumberSlotController : MonoBehaviour, IConnectable, ISignalSender { [Header("号码槽设置")] [SerializeField] private NumberType currentNumber = NumberType.Zero; [SerializeField] private NumberType correctNumber = NumberType.One; public List ConnectionLines { get; set; } = new List(); // 不可编辑,不可交互 // 可连接,可发信号 public void OnGazeEnter() { } public void OnGazeExit() { } public Vector3 GetPosition() => transform.position; public GameObject GetGameObject() => gameObject; public string GetConnectableName() => gameObject.name; // 接收信号 public void SignalActive(bool active, GameObject sender) { if (active) { SwitchToNextNumber(); } } // 切换到下一个号码 private void SwitchToNextNumber() { currentNumber = (NumberType)(((int)currentNumber + 1) % System.Enum.GetValues(typeof(NumberType)).Length); CheckNumberAndSendSignal(); } // 检查号码并发信号 private void CheckNumberAndSendSignal() { bool isCorrect = currentNumber == correctNumber; SendSignal(isCorrect); } // 发出信号 public void SendSignal(bool active) { if (ConnectionLines != null) { foreach (var line in ConnectionLines) { line.SignalActive(active, this.gameObject); } } } } }