using System; using System.Collections; using System.Collections.Generic; using DragonSoul.Shared; using Mono.Event; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.UI; namespace UnityTest.ZXL { public class RePlacementUI : UI { [SerializeField] private List _dragItems = new List(); private ETTask _task; [SerializeField] private GameObject finishPanel; [SerializeField] private Button btnFinish; [SerializeField] private RawImage _rawImage; public override void OnInit() { base.OnInit(); EventManager.Instance.Subscribe(RePlacementEventArgs.EventId, RePlacementEvent); finishPanel.SetActive(false); btnFinish.onClick.AddListener(ClickClose); } private void OnDestroy() { EventManager.Instance.Unsubscribe(RePlacementEventArgs.EventId, RePlacementEvent); finishPanel.SetActive(false); btnFinish.onClick.RemoveListener(ClickClose); } private void OnEnable() { StartCoroutine(WaitShow()); } /// /// 等待1s显示投影 /// /// IEnumerator WaitShow() { yield return new WaitForSeconds(1f); _rawImage.gameObject.SetActive(true); } public void SetAction(ETTask task) { if (task == null) { return; } _task = task; } private void RePlacementEvent(object sender, GameEventArgs e) { var args = e as RePlacementEventArgs; if (_dragItems.Count == 0) { return; } _dragItems.Remove(args.dragItem); if (_dragItems.Count == 0) { StartCoroutine(WaitTwoSecond()); } } /// /// 等待两秒激活完成面板 /// /// IEnumerator WaitTwoSecond() { yield return new WaitForSeconds(2); finishPanel.SetActive(true); } void ClickClose() { Debug.Log("换装完成了"); _task.SetResult(true); _task = null; } #if UNITY_EDITOR [Button] void Add() { this._dragItems.Clear(); var list = gameObject.GetComponentAllChild(); this._dragItems = list; } #endif } }