Unity开发日志1:#4对话系统

 一、靠近NPC触发对话框

        想要完成靠近人物后,屏幕上出现NPC的名字,点击后可以与其进行对话这一效果,很简单,首先需要在NPC周围创建一个空物体,并将其“Is trigger”打上,当玩家触碰到这一空物体后,就可以激活选项并开始对话,想要实现这一效果只需要为空物体脚本上OnTriggerEnter()方法和OnTriggerExit()方法即可。

二、读取txt文本

void GetTextFormFile(TextAsset file)
 
        {
 
            textList.Clear(); //清空对话框内容
 
            index = 0; //回到目录第0行
 
            var lineData = file.text.Split('\n');
 
//file.text:将file转化为txt文本转化为string字符形式
 
//.Spite切割,(‘\n’):按行切割,\n为换行
 
//var临时变量,匿名类型,自动识别数据类型
 
            foreach(var line in lineData) //foreach用以处理场景中所有对象
 
            {
 
                textList.Add(line); //每一行加到列表当中
 
            }
 
        }

这种情况只需要在txt文件中将需要展示的对话分段依次写下即可,非常方便

三、对话文字一一显现

        大多数游戏的对话中,文字都是一个一个地出现,这样可以减轻玩家的阅读压力,更好的带入其中,也可以根据不同玩家的需求,按下快捷键,立刻结束当句对话,让文字不在一一弹出而是立刻显现所有,而这只需要用到C#中的协程

        IEnumerator携程,可以依次执行容器中的函数,其实就是将函数进行分块处理,实现逐字显示Unity中的协程方法通过yield这个特殊的属性可以在任何位置、任意时刻暂停。也可以在指定的时间或事件后继续执行,而不影响上一次执行的就结果,yield后的代码会被挂起,先执行前面的内容

IEnumerator SetTextUI()
 
    {
 
        textFinished = false;
 
        textLabel.text = ""; //最开始显示空白
 
        int letter = 0; //letter为第几个字
 
        while (!cancelTyping && letter < textList[index].Length - 1)
 
        {
 
            textLabel.text += textList[index][letter];
 
            letter++;
 
            yield return new WaitForSeconds(0.1f); //等待时长
 
        }
 
        textLabel.text = textList[index];
 
        cancelTyping = false;
 
        textFinished = true;
 
        index++;
 
    }

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值