104 lines
2.6 KiB
C#
104 lines
2.6 KiB
C#
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<DragItem> _dragItems = new List<DragItem>();
|
|
|
|
private ETTask<bool> _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());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 等待1s显示投影
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
IEnumerator WaitShow()
|
|
{
|
|
yield return new WaitForSeconds(1f);
|
|
_rawImage.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void SetAction(ETTask<bool> 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());
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 等待两秒激活完成面板
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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<DragItem>();
|
|
this._dragItems = list;
|
|
}
|
|
#endif
|
|
}
|
|
} |