1. 程式人生 > >連連看項目實戰之三(解析配置表)

連連看項目實戰之三(解析配置表)

bject 點擊事件 wak iou 顯示 按鈕 src for in net

推薦閱讀:

  • ?我的CSDN
  • ?我的博客園
  • ?QQ群:704621321

?????? 這是一款連連看,如果只能連連,那估計大家看看就沒興趣了。如果在裏面加上一些場景式對話,那麽可能就會有意思許多。

?????? 今天就帶大家學習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)。當前說話人物名字,都可以根據配置表取得。

連連看項目實戰之三(解析配置表)