Unity中的Text文本字体间隔时间显示

在Unity中一些剧情需要让Text中的文字一个一个的显示,每个字体显示有需要有间隔时间。在熟知的方法中使用DoTween插件中的DOText方法是最简单的,我们只需要调用DOText方法在里面传入参数就可以了。但是DOText方法在只有一句话的时候是没有问题的,如果剧情长的话,使用DoText就不会很灵活。所以今天写了一个使用代码来控制的方法,也非常的简单,很好理解。直接上代码:

下面展示一些 内联代码片

 Text hint_txt;

    [SerializeField]
    List<string> hintList = new List<string>();

    int i = 0;
    int index = 0;
    bool isok = false;
    // Start is called before the first frame update
    private void Awake()
    {
        hint_txt = GetComponentInChildren<Text>();
    }
    void Start()
    {
        StartCoroutine(aa());
        //XXXX年X月X日,某国,两方政治势力争夺权力,身处高官的张三被对头冤枉即将审判入狱,弟弟李四接到消息以后要赶回国内拯救哥哥......
        //你需要找到张三的位置并找到钥匙打开相对应的门把哥哥救出来,请注意躲避守卫。(注意看门的颜色与钥匙的颜色哦!!)
        //你需要找到张三的位置并找到钥匙打开相对应的把哥哥就出来。(注意看门的颜色与钥匙的颜色哦!!)
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            isok = true;
        }

        if (Input.GetKeyDown(KeyCode.KeypadEnter))
        {
            hint_txt.text = "";
            StartCoroutine(aa());
        }
    }
    
    IEnumerator aa()
    {
        while (!isok && index < hintList.Count&&i<hintList[index].Length)
        {
            hint_txt.text += hintList[index][i].ToString();
            i++;
            yield return new WaitForSeconds(0.1f);
        }
        hint_txt.text = hintList[index];
        isok = false;
        index++;
        i = 0;
    }


首先 我们先要有一个保存对话的List,我们知道string类型也是一个数组类型 我们可以使用[]+索引来访问string中的元素,index表示我们访问的是List中的第几句话,i表示我们访问这句话中的第几个元素。使用while循环来判断不让索引来超出List的长度,如果满足条件使用Text组件+=就好了,每个字与每个字的间隔时间为0.1秒,我们使用协程来控制。当按下空格的时候直接跳过,显示全部的对话,当按下回车开始下一句对话,非常的简单实用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值