博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity 3D游戏-NPC对话系统With XML
阅读量:7044 次
发布时间:2019-06-28

本文共 8441 字,大约阅读时间需要 28 分钟。

用XML做的Unity NPC对话系统


本文提供全流程,中文翻译。
Chinar坚持将简单的生活方式,带给世人!
(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)



游戏效果:

这里写图片描述


1

Create XML Document —— 创建所需的XML文档

注意路径:

我的XML文档”Dialog.xml”放在了 Assets 目录下创建的一个 Data 目录中

如果名字不一样,需要改名

这里写图片描述

或者直接修改解析XML代码中的读取路径,为你自己的路径

document.Load(Application.dataPath + "/Data/Dialog.xml"); //加载 XML 内容

举个栗子88

背景1
雨声
船长
曲境一号船长1
花痴诗1
我的小鱼你醒了,还记认识早晨吗?
秀秀
秀秀1
花痴诗2
昨夜你曾经说, 愿夜幕永不开启。
船长
曲境一号船长2
花痴诗3
你的香腮边轻轻滑落的
秀秀
秀秀2
花痴诗4
是你的泪,还是我的泪?
背景2
秀秀
秀秀3
花痴诗5
初吻吻别的那个季节
船长
曲境一号船长3
花痴诗6
不是已经哭过了吗?
背景3
船长
曲境一号船长4
花痴诗7
我的指尖还记忆着
秀秀
秀秀4
花痴诗8
你慌乱的心跳
船长
曲境一号船长1
花痴诗9
温润的体香里
背景4
秀秀
秀秀1
花痴诗10
那一缕长发飘飘…

2

Audio Manager —— 音频管理器脚本

将此脚本挂在保证激活状态的 GameObject 上,并添加 2 AudioSource 组件

通过拖动的方式

Inspecter 面板中将 2 AudioSource 组件拖到 ↓

背景音: BgmAudioSource 和音效: SeAudioSource 框中

代码直接 Copy

举个栗子88

using UnityEngine;/// /// 声音管理类/// public class AudioManager : MonoBehaviour{    public static AudioManager Instance;       //单例    public        AudioSource  BgmAudioSource; //背景音    public        AudioSource  SeAudioSource;  //音效    private       AudioClip    _clip;          //音乐文件    ///     /// 初始化函数    ///     void Start()    {        Instance = this;    }    ///     /// 播放背景音    ///     public void PlayBgm(string inName)    {        _clip               = Resources.Load
(inName); //加载音乐文件 BgmAudioSource.clip = _clip; //更换音乐文件为Clip默认文件 BgmAudioSource.Play(); //播放音乐 } ///
/// 播放音效 /// public void PlaySe(string inName) { _clip = Resources.Load
(inName); //加载音乐文件 SeAudioSource.PlayOneShot(_clip); //播放音效,一声就完了 } ///
/// 停止背景音 /// public void StopBgm() { BgmAudioSource.Stop(); //停止播放器 }}

这里写图片描述


3

UI Manager —— 界面交互控制

将此脚本挂在保证激活状态的 GameObject

通过拖动的方式

Inspecter —— 面板中:分别添加声明的 6 个对象

代码直接 Copy

举个栗子88

using UnityEngine;using System.Xml;                  //引用XMLusing UnityEngine.UI;              //引用UIusing System.Collections.Generic;  //引用集合using UnityEngine.SceneManagement; //引用命名空间/// /// 枚举指令类型/// public enum CommandType{    Say, //说话    Bgm, //背景音    Bg   //背景}/// /// 基类:指令类/// public class Command{    public CommandType AllType; //定义成员变量 类型对象}/// /// 说话指令类:继承 指令基类/// public class Say : Command{    public string Name;    //名字    public string Image;   //图片    public string Sound;   //音乐    public string Content; //内容}/// /// 背景音指令类:继承 指令基类/// public class Bgm : Command{    public string Name; //名字}/// /// 背景指令类:继承 指令基类/// public class Bg : Command{    public string Name; //名字}/// /// 对话系统/// public class DialogUI : MonoBehaviour{    public  List Commands = new List(); //声明一个 List 数组 类型为:Command    private int           _index   = 0;                   //默认索引为0    public  GameObject    GameImage;                      //游戏界面    public  GameObject    ReloadBut;                      //重开按钮    public  Image         BgImage;                        //背景图    public  Image         HeadPortrait;                   //头像    public  Text          NameText;                       //名字文本    public  Text          ConttentText;                   //内容文本    private bool          _isExecute = false;             //是否执行命令:默认不执行    ///     /// 初始化方法    ///     void Start()    {        AnalysisXml();                                                                            //调用解析XML方法        GameObject.Find("StartGameButton").GetComponent

这里写图片描述


4

Finish —— 测试运行

直接点击运行 Or Alt+P

Chinar所作,Down下即可!

举个栗子88附:

这里写图片描述


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

转载于:https://www.cnblogs.com/chinarbolg/p/9601471.html

你可能感兴趣的文章
IsolatedStorageSettings存储数据_____简单_____自定义(复杂)____数据
查看>>
《敏捷软件开发》第4章测试
查看>>
DOS windows 使用bat脚本获取 IP MAC 系统信息
查看>>
PHP给图片添加水印
查看>>
Yaf学习(三)----Yaf类库Library和Model的命名规则
查看>>
蓝桥学院2019算法题2.1-2.5
查看>>
浅谈CLR CTS CLS。。。
查看>>
软件需求十步走读书笔记2
查看>>
[leetcode-647-Palindromic Substrings]
查看>>
UEditor
查看>>
nowcoder N约数个数
查看>>
Test a ; vs Test a( ) ;
查看>>
lemp(lnmp)web网站搭建
查看>>
【动态规划】Gym - 100507G - The Debut Album
查看>>
使用Redis+Flask维护动态代理池
查看>>
POJ 2594 - Treasure Exploration
查看>>
python的request包
查看>>
config配置中心之自动刷新
查看>>
杭电 1018 Big Number
查看>>
SQL Server的差异备份还原
查看>>