Files
aibis-dream/Assets/Scripts/UI/Panel/SignBoard/SignBoard.cs
T
2026-01-30 19:10:27 +08:00

57 lines
1.5 KiB
C#

using AibisDream.Framework;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
namespace AibisDream.UI
{
public class SignBoard : MonoBehaviour
{
[SerializeField] private SignArea signArea;
[SerializeField] private Image signSimple;
[SerializeField] private Image icon;
private CoroutineSignal _endSignal;
public void ShowSignBoard()
{
gameObject.SetActive(true);
signArea.Init();
signArea.onLengthTargetExceeded += OnSignEnd;
icon.gameObject.SetActive(false);
icon.ResetReveal();
}
public void EnableSignBoard(CoroutineSignal endSignal = null)
{
signArea.SetLocked(false);
signSimple.gameObject.SetActive(true);
_endSignal = endSignal;
}
public void CloseSignBoard()
{
gameObject.SetActive(false);
signArea.onLengthTargetExceeded -= OnSignEnd;
signArea.Dispose(); // Dispose 也会锁定,但这里显式调用确保状态正确
icon.gameObject.SetActive(false);
icon.ResetReveal();
signSimple.gameObject.SetActive(false);
}
private void OnSignEnd(float distance)
{
// 签名完成,打开成功标志
StartCoroutine(icon.RevealFromLeftAsync(1f, Ease.OutQuad));
// 触发结束信号
_endSignal?.Set();
}
}
}