Unity打包Android的apk文件时有关Json的注意事项 您所在的位置:网站首页 安卓无法打开apk文件解析错误 Unity打包Android的apk文件时有关Json的注意事项

Unity打包Android的apk文件时有关Json的注意事项

2024-06-22 18:52| 来源: 网络整理| 查看: 265

需要注意的事项如下: 一、Json的库文件LitJson.dll需要放在项目的Assets根文件夹中,一般是在Assets文件夹里面新建一个名为Plugins文件夹中,把Json的库文件放在这个文件夹中就可以。 二、接下来我们首先要把Json文件中的文本内容提取出来,也就是后缀以.json为结尾的Json文件,提取的方式暂时可以有以下两种通过代码的方式提取Json文件的文本内容:

//第一种方式 TextAsset filePath = Resources.Load(Json文件名); Debug.Log(filePath); //第二种方式 string filePathStr = Resources.Load(Json文件名).text; Debug.Log(filePathStr);

注: 1、代码中的“(Json文件名)“括号里面的"文件名"一定一定不要加上后缀名为.json或者是.txt,就是单纯的文件名,不要加Json文件名后缀就可以了! 2、如果Json文件是有层级结构的,那么我们在写Json文件名的时候顺便也要把Json前面的路径地址加上。

如果以上不清楚的话我就在这里打个比方, 第一种情况: 假如我们在Assets根文件夹里面有一个名为Resources文件夹,这个Resources文件夹中只有一个名为Demo.json的Json文件,那么我们现在的Json文件名为Demo就可以了。 第二种情况: 假如我们在Assets根文件夹里面有一个名为Resources文件夹,这个Resources文件夹中还有一个名为Catalog的文件夹,这个Catalog的文件夹中有一个名为Demo.json的Json文件,那么我们现在的Json文件名就要加上前面的文件夹路径了,也就是现在的Json文件名为Catalog/Demo就可以了。

三:通过以上的步骤就可以得到Json文件中的文本内容,那我们现在就可以开始下一个步骤:

using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; using System.IO; public class Memento { private string savePathInitPath; //初始版的Json文件路径 private string savePathCompletePath; //正在游戏版的文件路径 private string initContent; //初始版Json文件夹中的内容 private string completeContent; //正在游戏版的文件内容 private string filePath; //初始化游戏的相关数据 public void DataInit() { //通过Application.persistentDataPath可以持久在手机端读取、写入以及保存游戏的相关数据 savePathInitPath = Application.persistentDataPath + "/playerManager.json"; savePathCompletePath = Application.persistentDataPath + "/CompleteplayerManagerDataVersion.json"; //读取Json文件夹中的文本内容 initContent = Resources.Load("Json/CompleteplayerManagerDataVersion").text; completeContent = Resources.Load("Json/playerManager").text; //防止重复赋空值 if (filePath != null) { return; } filePath = ""; } //读取游戏数据 public PlayerManager LoadByJson() { //防止判空 if (savePathInitPath == null || savePathCompletePath == null || initContent == null || completeContent == null) { DataInit(); } PlayerManager playerManager = new PlayerManager(); if (GameManager.Instance.initPlayerManager) { filePath = savePathInitPath; //如果手机端的文件夹中不存在该文件,就创建该文件 if (!File.Exists(filePath)) { File.WriteAllText(filePath,initContent); } } else { filePath = savePathCompletePath; if (!File.Exists(filePath)) { File.WriteAllText(filePath, completeContent); } } if (File.Exists(filePath)) { StreamReader sr = new StreamReader(filePath); string jsonStr = sr.ReadToEnd(); sr.Close(); playerManager = JsonMapper.ToObject(jsonStr); return playerManager; } else { Debug.Log("PlayerManager读取失败"); } return null; } //存储游戏数据 public void SaveByJson() { if (savePathInitPath == null || savePathCompletePath == null || initContent == null || completeContent == null) { DataInit(); } PlayerManager playerManager = GameManager.Instance.playerManager; string saveJsonStr = JsonMapper.ToJson(playerManager); StreamWriter sw = new StreamWriter(filePath); sw.Write(saveJsonStr); sw.Close(); } }

代码中最最最值得需要注意的是: Application.persistentDataPath这个的相关使用方法,因为这个可以持久在手机端读取、写入以及保存游戏的相关数据。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有