• 连连看项目实战之三(解析配置表)


    推荐阅读:

           这是一款连连看,如果只能连连,那估计大家看看就没兴趣了。如果在里面加上一些场景式对话,那么可能就会有意思许多。

           今天就带大家学习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”字段时,jd[index]["ID"]是一个引用类型,需要转换成值类型(用来判断当前对话是否应该结束),此处需要使用拆箱操作来转换成string类型,然后强制转换成int类型。

           上面的NextDialog()方法是点击事件需要调用的方法,我们设定点击对话文字,开始当前场景的下一对话,方法与文章连连看项目实战之一(搭建场景)中给按钮添加点击事件的方法相似。

           这里只实现了大致的方法,还有很多细节需要你慢慢优化,比如两人对话,一方说话时,另一方人物应该隐藏,隐藏方法为:setActive(false);同理显示方法为:setActive(true)。当前说话人物名字,都可以根据配置表取得。

  • 相关阅读:
    tensorboard的log查看方法
    liunx系统中安装lua以及torch
    maven安装问题解决
    使用git将代码上传到GitHub
    解决引入keras后出现的Using TensorFlow backend的错误
    ubuntu下 pycharm使用andcoda下的tensorflow
    HTTP概览
    c++容器
    C++注意
    Strint类成员
  • 原文地址:https://www.cnblogs.com/shirln/p/10330051.html
Copyright © 2020-2023  润新知