首先我們需要下載一個文件 LitJson.dll(下載鏈接 ps: 是用自己的百度雲盤下載的如果鏈接過時,請留言或自行下載, 密碼: 5foa)
另外,由於我們要發布到安卓手機上,所以需要配置Jar和SDK,由於這裡主要講Json在安卓端的修改和讀取,在這裡就不細說了,當然如果不發布手機端的話,電腦端也是可以正常使用的
(1)首先我們來簡單搭建一個測試環境(如圖)
從上到下依次為text文本框, 按鈕, 輸入框, 按鈕, 功能如圖顯示(如果需要的話可以把UI放大,以免在手機上面太小,或者在Game左上角調整分辨率),. 搭建完之後,保存場景(菜單來File--Save Scene)
(2)現在我們需要來寫腳本了,建一個名字為JsonTest的Csharp腳本, 如下:
1 using UnityEngine; 2 using System.Collections; 3 using LitJson; //導入Json 4 using UnityEngine.UI; //導入UI 5 using System.Text; //使用StringBuilder 6 using System.IO; //使用文件流 7 8 /// <summary> 9 /// Json手機端讀取測試 10 /// </summary> 11 public class JsonTest : MonoBehaviour 12 { 13 public Text jsonText; //顯示Json的文本框 14 public InputField input; //修改Json數據的輸入文本框 15 public string name; //測試是否更換了Json裡面的值 16 17 void Awake() 18 { 19 name = "Person"; //寫一個人物的屬性 20 SaveJsonString(GetJson()); //得到一個Json數據之後,把這個數據存儲起來 21 } 22 23 public void DidReadJsonButton_Click() //讀取Json文本的按鈕事件 24 { 25 jsonText.text = GetJsonString(); //讀取json數據,並且顯示到文本框裡面 26 } 27 28 public void DidConfirmInputButton_Click() //讀取確定輸入框內容的按鈕事件 29 { 30 name = input.text; //獲取文本框裡面的數據 31 SaveJsonString(GetJson()); //存儲起來 32 } 33 34 public string GetJson() //由於這裡是測試, 本人就在這裡簡單寫一個Json數據 35 { //得到Json格式字符串 36 StringBuilder sb = new StringBuilder(); 37 JsonWriter writer = new JsonWriter(sb); 38 writer.WriteObjectStart(); //字典開始 39 writer.WritePropertyName(name); //鍵值(人物屬性 通過改變name來打印出來值觀察) 40 writer.WriteObjectStart(); 41 writer.WritePropertyName("Hp"); //裡面有這些屬性 42 writer.Write("20"); 43 writer.WritePropertyName("Mp"); 44 writer.Write("60"); 45 writer.WritePropertyName("Attack"); 46 writer.Write("30"); 47 writer.WritePropertyName("Exp"); 48 writer.Write("100"); 49 writer.WriteObjectEnd(); 50 writer.WriteObjectEnd(); //字典結束 51 return sb.ToString(); //返回Json格式的字符串 52 } 53 54 public void SaveJsonString(string JsonString) //保存Json格式字符串 55 { 56 FileInfo file = new FileInfo(Application.persistentDataPath + "JsonData.Json"); //這裡是重點,會在下面細說的,這裡只需要知道它只是一個路徑 57 StreamWriter writer = file.CreateText(); //用文本寫入的方式 58 writer.Write(JsonString); //寫入數據 59 writer.Close(); //關閉寫指針 60 writer.Dispose(); //銷毀寫指針 61 } 62 63 public string GetJsonString() //從文件裡面讀取json數據 64 { //由於這裡只是測試,所以就不寫具體的解析數據了 65 StreamReader reader = new StreamReader(Application.persistentDataPath + "JsonData.Json"); 66 string jsonData = reader.ReadToEnd(); 67 reader.Close(); 68 reader.Dispose(); 69 return jsonData; 70 } 71 }
(3)腳本我們已經寫完了, 現在我們需要掛載腳本,我是建了一個空物體掛載腳本,然後需要把對應的物體給拖進去(不要忘記拖按鈕事件哦)運行結果如下:
通過結果可以看到,在電腦端已經成功了
(4)接下來就是打包發布了, 菜單欄(File)--Build Settings--Platform(Android)-- Add Current(或者把剛才的場景拖進去,盡量在打包之前先把場景保存一遍,然後在添加進去), 在這裡需要點擊Player Settings 右邊有個小安卓機器人的圖標,點擊一下,到Ohter Settings裡面ba Bundle Identifier 裡面的com.Company.後面的改一下,如果需要旋轉屏幕可以在Resolution and Preadentaion裡面的Default Orientaion裡面調整你想要的效果
上面依次是手機上面的效果, 開始頁面,顯示,修改頁面
(5)如果想發布到電腦端的話,同樣也可以哦,只需要把剛才的第四步裡面發布的發布平台(Platform)更換成PC就可以了,同樣可以使用的
(6)現在我們來說說Application.persistentDataPath這個路徑
這個路徑只有在應用程序裝到手機端之後才有的路徑,所以不能直接把文件存放在該路徑, 在這個路徑下的資源,是可以修改和讀取的,對於我們需要修改的數據可以存放在這裡面的, 就拿存放在Resources資源文件夾裡面的資源來說, 這裡面的資源是可以通過Resources.Load<>來獲取到的,但是不能修改,這個比較坑,不過可以把一些預制體放在這個文件夾裡面還是比較方便的.