Files
aibis-dream/Assets/Scripts/UI/DialogUI/TextBubble.cs
T
2025-03-08 19:13:57 +08:00

54 lines
1.3 KiB
C#

using System;
using AibisDream.Kit;
using AibisDream.Utility;
using Febucci.UI.Core;
using UnityEngine;
namespace AibisDream.Framework
{
public class TextBubble : MonoBehaviour
{
private TypewriterCore _typewriter;
#region 参数
[SerializeField] public ActorRole role;
[SerializeField] public int idx;
[SerializeField] private int maxCharNum;
#endregion
private bool _skipLineDelay;
public bool IsShowingText => _typewriter.isShowingText;
private void Awake()
{
_typewriter = GetComponentInChildren<TypewriterCore>();
}
public void ShowLine(string line, Action onTextEnd)
{
_typewriter.TextAnimator.SetText("");
gameObject.SetActive(true);
var formattedLine = CommonUtil.SplitString(line, maxCharNum);
_typewriter.ShowText(formattedLine);
// 对话结束回调
_typewriter.onTextShowed.RemoveAllListeners();
_typewriter.onTextShowed.AddListener(() => onTextEnd?.Invoke());
}
public void SkipLine()
{
if (_typewriter.isShowingText)
{
_typewriter.SkipTypewriter();
}
}
public void Hide()
{
gameObject.SetActive(false);
}
}
}