UNITY 对话系统
1. 准备工作
创建一个画布(Canvas),画布中创建一个面板(Panel),面板中放个文本框(TEXT)和两个按钮(Button)(一个用于直接关闭,另一个用于点击之后继续说下句话)和一个挂载脚本的空物体(更名为DialogManager);
2.写脚本
Asset中创建一个C#脚本,脚本名DialogSystem,将其挂载到DialogManager组件中。
(1)字段
记得要引入命名控件using UnityEngine.UI;
public GameObject DialogUI; //对话Panelpublic Text DialogText; //Panel的子级Text[TextArea(1,3)] public string[] DialogTextList; //存放对话内容 前面的特性是为了在Inspector窗口中文字区域显示成三行public int currentIndex;//对话数组索引
- 写好保存后将这个脚本回到unity中给这些变量赋值。
(2)写三个方法
public void CloseDialog() //点击Close执行;关闭对话Panel{DialogUI.SetActive(false);}public void ContinueDialog() //点击Continue按钮执行;继续下句话{currentIndex++;if (currentIndex < DialogTextList.Length){DialogText.text = DialogTextList[currentIndex];}else{CloseDialog();}}private void OnEnable() //在激活对话面板按钮时触发,目的是为了使索引归0{currentIndex = 0;DialogText.text = DialogTextList[currentIndex];}
CloseDialog方法给buttonClose按钮(具体操作方法是选中ButtonClose按钮,在Inspector窗口中Onclick那里点击加号添加一个事件,将DialogManager拖入如图所示的地方,再在右边的下拉窗口中选择CloseDialog方法,下同)
ContinueDialog方法给ButtonContinue按钮(操作和上述相同)
3.效果
4.拓展
- 细心的小伙伴可以注意到,我是用string类型的数组存储的我要交流的内容对话,还有一种方式是可以读取外部的文本文件(TXT格式,XML格式等等)
- 我们还可以使用协程技术让一句话逐字显示
这两个内容都在这个链接里(感谢麦扣老师,教会我这么多东西):https://space.bilibili.com/370283072/channel/detail?cid=99057
我博客详细写的这个方法对应的视频是在这里面(感谢Joe老师)
https://www.bilibili.com/video/BV1oV411r7Ts
----------------------------------------------------------------------------------------------------------------------------------------------------------
2021/4/27更
今天发现一款非常好用的对话插件Fungus,可以这样说,这是一个非常方便的插件(不需自己设计UI,几乎不用代码就可以实现对话),详细讲解请跳转:
https://www.bilibili.com/video/BV18t411p7pV?from=search&seid=6279946706141458960
2021/4/28更
问题1
细心的小伙伴肯定已经发现一个问题,文字显示模糊,这个问题有很多因素会导致,我只讲我的操作不当的解决办法。
操作不当:我当时肯定是在Canvas下建的Text,则Text的锚点不在不是以Panel为父级(尽管你后来拖进Panel中也不对),所以缩放不准确而导致显示字体的像素较少,从而字体看上去特别模糊。
正确做法:选中Panel,右键添加Text,锚点是这样才对。
文字显示效果(非常清晰)
问题2
如果你的Text部分压盖Button时,你一定要保证在Hierarchy窗口中Text在两个Button上面(Unity公司的设计规定:越靠上UI的优先级越高);如果Text在Button下面的话,则就会把Button压盖导致Button点击无效;
UNITY 对话系统相关推荐
- Unity—对话系统GalGame游戏文字对话制作
每日一句:人间总有一两,填我十万八千梦 目录 对话系统 文本逐字打印功能 GalGame游戏(美少女游戏)文字对话 对话系统 被触发物体(挂载脚本)下UI,先不激活 public class Talk ...
- Unity 对话系统 文字打字机效果实现
功能: 1.文字逐个出现 2.支持富文本 3.添加<float>标签可以延迟显示 4.想快速展示完调用函数 ImmediatelyShow 准备: 代码: using System; us ...
- 【Unity插件】最多的插件合集
一.前言 ? 最近整理了一下文章,发现我分享了很多的插件,但是如果要查找某一款插件,还需要去搜索才能找到,很不方面,就想要将写过的所有的插件分享也好,教程也好,做一个汇总,然后这篇文章还会不断的更新, ...
- 初级爬虫师_成为初级设计师并不那么骄傲
初级爬虫师 重点 (Top highlight) I recently became an active member of the Medium Design community and I was ...
- unity3d 人物对话_角色交互任务对话系统Unity游戏素材资源
游客,您需要回复才可以查看或下载该资源!没有账号?注册 本游戏资料是角色交互任务对话系统Unity游戏素材资源,大小:38 MB ,格式:unitypackage,使用软件:unity2017.4.1 ...
- Unity Fungus插件的对话系统简单使用
Fungus是Unity免费的一款开源的插件,它可以无代码的实现玩家与NPC之间的对话,对于Fungus这个插件,我今天说一说我对它的看法以及一些简单的运用和简单的代码功能的实现. 这里需要导入Fun ...
- Unity 3D游戏-NPC对话系统With XML
用XML做的Unity NPC对话系统 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Create ...
- 学习在Unity中创建一个动作RPG游戏
游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...
- Unity完全学习教程-从初学者到C#中的RPG游戏开发
打造3款游戏&学习Unity实用方式!从基础开始,以一个RPG游戏结束.使用Unity 2020和C# 你会学到: 通过创建酷游戏的实用方法 游戏开发的基础和核心概念 创建一个拥有大量功能的角 ...
- Unity笔记之调节text的字间距
需求:unity内置的调节间距的只有行距,无法调节字的间距,只能通过代码来实现调节字间距的效果. 内容我是百度别人的拿来直接用的,附一下大佬的地址 using System.Collections; ...
最新文章
- CCIE-MPLS基础篇-实验手册
- 网页简单配置捉取网购信息
- F5 Priority Group Activation
- DB2日志传送基础知识简介
- ./ 表示当前路径 ../ 表示上一级目录路径
- JAVA基本数据类型、数据类型转换
- 如何在Java中验证电话号码(正则表达式+ Google libphonenumber)
- 发现kafka丢消息后的排查
- Deep learning 学习开篇
- UNIX系统中的文件共享
- Html的页面演变史01
- PAT甲级1146 Topological Order (25 分)
- SQL计算日环比、周同比
- mysql为什么不用b树_MySQL用B+树(而不是B树)做索引的原因
- 给自己:得失心莫太重,功利心莫太强
- 触控面板 开发_长信科技研发内核不断升级 成触控显示一体化领军企业
- mysql如何数据恢复
- 计导 第 10 章 软件工程
- 【破解】修改程序版权、添加弹窗
- Linux安装svn服务端及iF.SVNAdmin可视化管理