赞
踩
原文博客地址:Unity3D仿仙剑对话系统开发_紫丶光的博客-CSDN博客
博客中有两处语法错误 切割文本内容的时候和创建头像的时候
创建一个cube作为点击NPC的人物对象(挂载NPC脚本)
创建一个空物体 GameManager(挂载Dialog脚本)
场景中创建一个对话背景Image 对话文本1(人物名字) 对话文本2(对话内容) Image 人物头像 运行时点击Cube即可看见效果
对话文本内容如下,text文本保存格式一定是UTF-8 ,不然不会显示中文,创建好之后直接拖入Unity中即可使用
云天河%梦璃……是你吗?%0
云天河%是你回来了吗?%0
柳梦璃%云公子……是我……%1
柳梦璃%云公子……你还好吗……%1
云天河%梦璃……我很好,你终于回来了……%0
柳梦璃%云公子,你的眼睛怎么了……%1
云天河%不碍事……倒是你,香味老远就闻到了……%0
柳梦璃%(哭泣)云公子……%1
云天河%回来就好…%0
脚本代码:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class NPC : MonoBehaviour {
-
- public TextAsset _mTextAsset; //文本资源
-
- private void OnMouseDown()
- {
- Dialog.share.CreateDialogue(_mTextAsset);
- }
- void Start () {
-
- }
-
- void Update () {
-
-
- }
- }
空物体上的脚本:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using DG.Tweening;
- public class Dialog : MonoBehaviour {
-
- public static Dialog share;
-
- public List<string[]> List_diaContents = new List<string[]>(); //用来存储所有的对话内容
-
- public Image dialogueBg; //对话款背景
- public Text _textName; //对话人物的名字
- public Text _textContent; //对话人物说的话
- public Image _imageHead; //头像
- public Sprite[] IconSprites;//所有头像集合
-
- private bool isChat = false; //是否在对话
- private int index; //对话内容的索引
- private Tweener tweener; //对话框进入和离开屏幕的动画
-
- private void Awake()
- {
- share = this;
- }
- void Start () {
- tweener = dialogueBg.rectTransform.DOLocalMoveY(-150, 0.5f).SetEase(Ease.InBack) .SetAutoKill(false);
- tweener.Pause(); //动画一开始设置为暂停
- IconSprites = Resources.LoadAll<Sprite>("Icon"); //获取所有头像集合
- }
-
- /// <summary>
- /// 创建一个对话框
- /// </summary>
- /// <param name="_mTextAsset">文本资源</param>
- public void CreateDialogue(TextAsset _mTextAsset)
- {
- if (isChat)
- {
- Debug.Log("111");
- return;
- }
- List_diaContents.Clear();//每次都清空对话 List
- isChat = true;
- //初始化文本资源里的对话内容
- string[] textAll = _mTextAsset.text.Split('\n');//先根据换行符切割出每一行文字
- for (int i = 0; i < textAll.Length; i++)
- {
- string[] contents = textAll[i].Split('%'); //根据%切割出三个 0 名字 1说的话 2头像
- List_diaContents.Add(contents); //把名字 对话 头像 存进List
- }
- Debug.Log("222");
- tweener.PlayForward(); //播放对话框进入屏幕的动画
- }
-
- void Update () {
- if (isChat) //当打开对话框时
- {
- if (Input.GetMouseButtonDown(0)||Input.GetKeyDown(KeyCode.Space))
- {
- Debug.Log("333");//
- if (index>=List_diaContents.Count) //当对话到了最后一步
- {
- tweener.PlayBackwards(); //倒放对话框动画
- index = 0;
- isChat = false;//关闭
- }
- else
- {
- _textName.text = List_diaContents[index][0]; //显示对话人物的名称
- _textContent.text = List_diaContents[index][1];//显示对话的内容
- int i = int.Parse(List_diaContents[index][2]);
- _imageHead.sprite = IconSprites[i];//显示头像
- index++; //当前对话内容的索引
- }
- }
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。