Unity 实现简单的人物对话系统

原文博客地址: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++; //当前对话内容的索引
}
}
}
}
}


  • 19
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Unity3D是一款非常流行的游戏开发引擎,人物预制体是游戏中经常使用的角色模型。在Unity3D中,为了方便开发者快速制作游戏,许多人物预制体可以在互联网上进行下载。以下是关于Unity3D人物预制体下载的一些信息。 首先,Unity Asset Store是最常用的网站之一,开发者可以在该网站上找到大量的人物预制体。在该网站上,你可以通过搜索功能或浏览不同类别来查找适合的人物预制体。一些预制体可能是免费的,而其他一些可能需要付费购买。可以根据自己的需要选择合适的预制体并下载使用。 此外,还有一些第三方网站也提供大量的Unity3D人物预制体下载。你可以通过搜索引擎来查找这些网站,并找到适合的资源进行下载。在使用第三方网站时,一定要注意资源的来源和可靠性,确保下载到的资源是合法且没有病毒的。 最后,Unity3D官方论坛和一些开发者社区也是获取人物预制体资源的好地方。许多热心的开发者会分享自己制作的人物预制体,你可以在这些地方找到并下载使用。此外,这些地方也是交流和学习Unity3D开发经验的好去处。 总之,Unity3D提供了许多资源获取的途径,包括Unity Asset Store、第三方网站以及官方论坛和开发者社区。根据自己的需求和预算,你可以在这些地方找到并下载合适的人物预制体,加快游戏开发的进度。记得确保资源的来源和可靠性,以确保你下载到的是合法、安全的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值