using System;
using XLua;
using UnityEngine;
public class UIDOTextAnim:Monobehaviour
{
private TMPro.TMP_Text _tmpText;
private string _detail;
private Coroutine _co =null;
private string _curDetail;
private LuaFunction _callback =null;
public void SetData(TMPro.TMP_Text go,string detail,LuaFunction func)
{
_tmpText=go;
_detail=detail;
_callback =func;
_tmpText.text ="";
_curDetail="";
_co = StartCoroutine(PlayAnim());
}
public IEnumerator PlayAnim()
{
int len=_detail.Length;
for(int i =0 ; i,len;i++)
{
string prepareStr="";
if(_detail[i].Equals('<'))
{
int index =_detail.IndexOf('>',i);
prepareStr=_detail.Substring(i,index-i+1);
i=index;
}
else
{
prepareStr=_detail[i].ToString();
}
_curDetail+=prepareStr;
_tmpText.text=_curDetail;
yield return new WaitForSeconds(_speed);
}
if(_callback!=null)
_callback.Call();
Clear();
}
public void StopAnim()
{
if(_co!=null)
{
_tmpText.text=_detail;
StopCoroutine(_co);
if(_callback!=null)
_callback.Call();
}
Clear();
}
private void Clear()
{
_curDetail="";
_callback=null;
_co=null;
}
}
unity c#和lua交互 实现仿dotween.dotext并兼容图文并排
最新推荐文章于 2024-03-12 15:46:42 发布
该篇文章介绍了如何在Unity中使用XLua和TMPro.TMP_Text组件创建一个动态文本动画,并通过Lua回调函数实现自定义逻辑。通过SetData方法设置文本内容和回调,PlayAnim()方法逐字符显示并等待指定时间,StopAnim()用于停止动画并执行回调。
摘要由CSDN通过智能技术生成