unity c#和lua交互 实现仿dotween.dotext并兼容图文并排

该篇文章介绍了如何在Unity中使用XLua和TMPro.TMP_Text组件创建一个动态文本动画,并通过Lua回调函数实现自定义逻辑。通过SetData方法设置文本内容和回调,PlayAnim()方法逐字符显示并等待指定时间,StopAnim()用于停止动画并执行回调。
摘要由CSDN通过智能技术生成
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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值