Unity 中存储数据到JSON本地文件

Posted 陈言必行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 中存储数据到JSON本地文件相关的知识,希望对你有一定的参考价值。

使用列表的方式存储JSON文件到本地,,虽然可以实现,但是读取的时候总出现各种问题,也许是个人水平有限,,个人还是感觉用Dictionary这种键值对的方式存储,更新读取都很方便,推荐查看:点击链接,,

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;

public class Person
    
        public string Name  get; set; 
        public double HP  get; set; 
        public int Level  get; set; 
        public double Exp  get; set; 
        public int Attak  get; set; 

    
public class PersonList
    
        public List<Person> list = new List<Person>();
    

public class Classtext : MonoBehaviour 


    public PersonList personList = null;

    // Use this for initialization
    void Start () 
        Person person = new Person();
        person.Name = "Czhenya";
        person.HP = 100;
        person.Level = 30;
        person.Exp = 3333.33;
        person.Attak = 50;

        string json1 = JsonMapper.ToJson(person);
        Debug.Log(json1.ToString());

        Save(person);

    
    /// <summary>
    /// 保存JSON数据到本地的方法
    /// </summary>
    /// <param name="player">要保存的对象</param>
    public void Save(Person player)
    
        string filePath = Application.dataPath + @"/JsonPerson.json";

       // Debug.Log(Application.dataPath + @"/JsonPerson.json");

        personList = new PersonList();
        if (!File.Exists(filePath))
                  
            personList.list.Add(player);
        
        else
        
            //若没有信息则新建,有则 更新,,,
            bool bFind = false;
            //遍历列表
            for (int i = 0; i < personList.list.Count; i++)
                            
                Person savePlayer = personList.list[i];
                if (player.Name == savePlayer.Name)
                
                    savePlayer.Level = player.Level;
                    savePlayer.HP = player.Level;
                    savePlayer.Exp = player.Exp;
                    savePlayer.Attak = savePlayer.Attak;

                bFind = true;
                    break;
                
            
            if (!bFind)
            
                personList.list.Add(player);

            
        

        //找到当前路径
        FileInfo file = new FileInfo(filePath);
        //判断有没有文件,有则打开文件,,没有创建后打开文件
        StreamWriter sw = file.CreateText();
        //ToJson接口将你的列表类传进去,,并自动转换为string类型
        string json = JsonMapper.ToJson(personList.list);
        //将转换好的字符串存进文件,
        sw.WriteLine(json);
        sw.Close();
        sw.Dispose();
    


下面是运行后,新创建出来的JsonPerson.json文件的内容,,,

["Name":"Czhenya","HP":100.0,"Level":30,"Exp":3333.33,"Attak":50]

改进后的方法链接:存储和读出都可以实现了!!!推荐查看,,,http://blog.csdn.net/Czhenya/article/details/78057062

以上是关于Unity 中存储数据到JSON本地文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JSON 解析到 Unity GameObject

Unity数据持久化——Json

Unity 使用JSON实现本地数据保存和读取

关于Unity中的本地存储

我想将图像数据(Texture2D)转换为 Base64 字符串并存储在 Unity3D(C#)中的 JSON 文件中

如何将 json 文件加载到本地存储中?