unity讀取Json文件
最近做項目的時候,因爲物品太多,而且每個物品的信息都類似,所以我們沒有選擇一個一個賦予信息 ,而是選擇使用加載Json數據表的方法進行獲取信息。在這裏,我們通過做一個查詢系統來進行演示讀取Json數據表。
1.首先,先創建一個項目,新建四個UI組件,輸入框,按鈕和文字,背景,同時導入Json的引用文件:LitJson
2.新建一個StreamingAssets文件夾
3.新建一個文本文檔,開始寫數據表,如下格式
4.然後另存爲Json文件,設置如下:
5.把新建好的json數據文件拖入剛纔的StreamingAssets文件夾裏面,爲了保證json文件的正確性,打開網頁,把裏面的數據複製,找一個檢測json數據的網站,進行數據檢測:
同時,我們爲了方便,可以生成C#實體類,待會用得上
6.新建一個腳本,隨便掛在一個物體上,這裏我掛在攝像機上。腳本代碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using LitJson;
using System.IO;
public class TestDataItem
{
/// <summary>
///
/// </summary>
public string ID { get; set; }
/// <summary>
/// 雕塑
/// </summary>
public string Type { get; set; }
/// <summary>
/// 滕王閣
/// </summary>
public string Name { get; set; }
}
public class Root
{
/// <summary>
///
/// </summary>
public List<TestDataItem> TestData { get; set; }
}
public class JsonText : MonoBehaviour {
public InputField inputField;//輸入框
public Text contentText;//文本框
public void GetJsonInfo()//這個方法給按鈕註冊
{
if (inputField.text == "")//輸入框爲空
{
contentText.text = "輸入爲空";
}
else
{
StreamReader streamreader = new StreamReader(Application.dataPath + "/StreamingAssets/Test.json");//讀取數據,轉換成數據流
JsonReader js = new JsonReader(streamreader);//再轉換成json數據
Root r = JsonMapper.ToObject<Root>(js);//讀取
for (int i = 0; i < r.TestData.Count; i++)//遍歷獲取數據
{
if (inputField.text == r.TestData[i].ID)
{
contentText.text = "ID號碼:" + r.TestData[i].ID + " 類型:" + r.TestData[i].Type + " 名字:" + r.TestData[i].Name;
break;
}
}
}
}
}
7.這樣,把上面那個方法給按鈕註冊,當我們輸入正確的id,就可以進行簡單的數據讀取了,將複製的實體類也粘貼到自己的腳本里,當然這裏你也可以自己寫json實體類,也就是兩個東西,一個類是具體的單個數組裏面的元素,一個是定義一個整體的鏈表,從我們寫的json數據表就可以看出怎麼寫,格式很重要,錯了一個就讀取不到,所以一定要注意喲。