unity3d在Android端讀取修改Json數據


首先我們需要下載一個文件 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<>來獲取到的,但是不能修改,這個比較坑,不過可以把一些預制體放在這個文件夾里面還是比較方便的.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM