赞
踩
想要完成靠近人物后,屏幕上出现NPC的名字,点击后可以与其进行对话这一效果,很简单,首先需要在NPC周围创建一个空物体,并将其“Is trigger”打上,当玩家触碰到这一空物体后,就可以激活选项并开始对话,想要实现这一效果只需要为空物体脚本上OnTriggerEnter()方法和OnTriggerExit()方法即可。
- 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++;
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。