using System; using UnityEngine; using UnityEngine.UI; using TMPro; namespace AibisDream { public class OnelineOption : MonoBehaviour { [SerializeField] private TMP_Text text; [SerializeField] private BaseButton button; [SerializeField] private Image arrow; [SerializeField] private Image selectedSign; [Header("颜色配置")] [SerializeField] private ColorBlock colorBlock; private DialogOption _option; public void Init() { button.onStateTransition.AddListener(OnStateTransition); } public void SetOption(DialogOption option, Action hide = null) { _option = option; if (!option.IsAvailable) { // 不可用,设置为不可选 button.interactable = false; text.SetText($"{option.Line}"); return; } selectedSign.gameObject.SetActive(option.IsSelected); text.SetText(option.Line); button.onClick.AddListener(() => { option.Select(); hide?.Invoke(); }); } private void OnStateTransition(SelectionType state, bool instant) { switch (state) { case SelectionType.Normal: arrow.gameObject.SetActive(false); SetColor(colorBlock.normalColor); break; case SelectionType.Highlighted: arrow.gameObject.SetActive(true); SetColor(colorBlock.highlightedColor); break; case SelectionType.Pressed: arrow.gameObject.SetActive(true); SetColor(colorBlock.pressedColor); break; case SelectionType.Selected: arrow.gameObject.SetActive(true); SetColor(colorBlock.selectedColor); break; case SelectionType.Disabled: arrow.gameObject.SetActive(false); SetColor(colorBlock.disabledColor); break; } } private void SetColor(Color color) { arrow.color = color; text.color = color; selectedSign.color = color; } } }