• 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<>来获取到的,但是不能修改,这个比较坑,不过可以把一些预制体放在这个文件夹里面还是比较方便的.

  • 相关阅读:
    《Linux内核分析》第七周学习总结
    《Linux内核分析》第六周学习总结
    《Linux内核设计与实现》第三章学习笔记
    《Linux内核分析》第五周学习总结
    《Linux内核设计与实现》第五章学习笔记
    《Linux内核分析》第四周学习总结
    Will We All Secretly Love Twitter’s Fleets?
    Medium高质量英语阅读(3):Startups Are Starting to Choose Normal Names Again
    Medium高质量英语阅读(2):Reimagining The Classroom Of The Future: A Conversation With Matt Wilkerson
    Medium高质量英语阅读(1):How Japanese People Stay Fit for Life, Without Ever Visiting a Gym
  • 原文地址:https://www.cnblogs.com/ZhiXing-Blogs/p/4900544.html
Copyright © 2020-2023  润新知