当前位置:   article > 正文

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

unity 对话系统

 一、靠近NPC触发对话框

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

二、读取txt文本

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

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

三、对话文字一一显现

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

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

  1. IEnumerator SetTextUI()
  2. {
  3. textFinished = false;
  4. textLabel.text = ""; //最开始显示空白
  5. int letter = 0; //letter为第几个字
  6. while (!cancelTyping && letter < textList[index].Length - 1)
  7. {
  8. textLabel.text += textList[index][letter];
  9. letter++;
  10. yield return new WaitForSeconds(0.1f); //等待时长
  11. }
  12. textLabel.text = textList[index];
  13. cancelTyping = false;
  14. textFinished = true;
  15. index++;
  16. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/116860
推荐阅读
相关标签
  

闽ICP备14008679号