推荐阅读:
这是一款连连看,如果只能连连,那估计大家看看就没兴趣了。如果在里面加上一些场景式对话,那么可能就会有意思许多。
今天就带大家学习Unity解析配置表,显示配置表信息,即对话文字。
用excel写好对话信息,如下:
百度“Excel转txt”,将上卖弄的excel格式转换成txt类型文件,命名为dialog。
下载LitJson.dll文件,在Unity项目Assets目录下创建Plugins文件夹,并将下载好的LitJson.dll文件并放入其中。新建Configs文件夹并将dialog.txt文件放入其中。
在unity中新建场景,并搭建如下对话UI,保存并命名为DialogScene
新建C#脚本并命名为ParseConfigs,写下如下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;
using UnityEngine.UI;
public class ParseConfigs : MonoBehaviour {
private Text dialogText;
private JsonData jd;
private int index=0;
// Use this for initialization
void Awak()
{
}
void Start () {
dialogText =GetComponent<Text>();
StreamReader sr = File.OpenText("Assets/Resources/Configs/Dialog.txt");
string strline = sr.ReadToEnd();
jd = JsonMapper.ToObject(strline);//jd是一个数组数组中的每个元素是一个Object
dialogText.text = (string)jd[index]["dialogText"];
}
// Update is called once per frame
void Update () {
}
public void NextDialog()
{
index++;
string ob = (string)jd[index]["ID"];//箱操作
int id= int.Parse(ob);转换成int类型
if (id > (GameManager.Instance.currDialog+1) * 1000)
{
//当前对话结束
return;
}
else
{
dialogText.text = (string)jd[index]["dialogText"];
}
}
}
注意:上面代码中,jd是一个数组,数组中的每个元素都是一个object对象。取数组中的“ID”字段时,jdindex是一个引用类型,需要转换成值类型(用来判断当前对话是否应该结束),此处需要使用拆箱操作来转换成string类型,然后强制转换成int类型。
上面的NextDialog()方法是点击事件需要调用的方法,我们设定点击对话文字,开始当前场景的下一对话,方法与文章连连看项目实战之一(搭建场景)中给按钮添加点击事件的方法相似。
这里只实现了大致的方法,还有很多细节需要你慢慢优化,比如两人对话,一方说话时,另一方人物应该隐藏,隐藏方法为:setActive(false);同理显示方法为:setActive(true)。当前说话人物名字,都可以根据配置表取得。