using System; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class SkillWin : Window { [SerializeField] Button m_Close; [SerializeField] Button m_Left; [SerializeField] Button m_Right; [SerializeField] FunctionButton m_ActSkill; [SerializeField] FunctionButton m_PassSkill; [SerializeField] FunctionButton m_Talent; [SerializeField] FunctionButton m_TreasureSkill; [SerializeField] FunctionButtonGroup m_FuncGroup; [Header("拖动延迟")] [SerializeField] float m_OnDragDelay = 0.1f; SkillModel m_Model; SkillModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } protected override void BindController() { model.onDragDelay = m_OnDragDelay; } protected override void AddListeners() { m_Close.onClick.AddListener(OnClose); m_ActSkill.onClick.AddListener(OnAccordFunc); m_PassSkill.onClick.AddListener(OnPassFunc); m_Talent.onClick.AddListener(OnTalentFunc); m_TreasureSkill.onClick.AddListener(OnTreasureSkillFunc); m_Left.onClick.AddListener(() => { m_FuncGroup.TriggerLast(); }); m_Right.onClick.AddListener(() => { m_FuncGroup.TriggerNext(); }); } private void OnPassFunc() { CloseChild(); functionOrder = m_PassSkill.order; WindowCenter.Instance.Open(); } private void OnTalentFunc() { CloseChild(); functionOrder = m_Talent.order; WindowCenter.Instance.Open(); } private void OnAccordFunc() { CloseChild(); functionOrder = m_ActSkill.order; WindowCenter.Instance.Open(); } private void OnTreasureSkillFunc() { CloseChild(); functionOrder = m_TreasureSkill.order; WindowCenter.Instance.Open(); } protected override void OnPreOpen() { } protected override void OnActived() { base.OnActived(); if (functionOrder == 0 && model.jumpToPass) { functionOrder = m_PassSkill.order; model.jumpToPass = false; } m_FuncGroup.TriggerByOrder(functionOrder); } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.jumpToPass = false; } protected override void OnAfterClose() { if (!WindowJumpMgr.Instance.IsJumpState) { WindowCenter.Instance.Open(); } } void OnClose() { CloseChild(); CloseImmediately(); } void CloseChild() { var children = WindowConfig.Get().FindChildWindows("SkillWin"); foreach (var window in children) { WindowCenter.Instance.Close(window); } } } }