找回密码
 立即注册
查看: 180|回复: 0

Unity 保存数据到本地json文件

[复制链接]
发表于 2023-2-6 10:10 | 显示全部楼层 |阅读模式
using System.Collections;using System.Collections.Generic;using UnityEngine;using LitJson;using System.Text;using System.IO;using UnityEngine.UI;public class Model{    public string key;    public string value;}public class BtnNameJson : MonoBehaviour{    public static BtnNameJson Instance;    public static string strPath;    public List<Model> listModel = new List<Model>();    public List<GameObject> listBtns = new List<GameObject>();    private void Awake()    {        Instance = this;        strPath = Application.dataPath + "/BtnName.json";    }    void Start()    {        Invoke("Load", 1);    }    public void Load()    {        StreamReader streamReader = new StreamReader(strPath);        string str = streamReader.ReadToEnd();        JsonData jsdata = JsonMapper.ToObject(str);        listModel.Clear();        for (int i = 0; i < jsdata.Count; i++)        {            Model m = new Model { key = jsdata["key"].ToString(), value = jsdata["value"].ToString() };            listModel.Add(m);        }        for (int i = 0; i < listBtns.Count; i++)        {            foreach (var item in listModel)            {                if (item.key == listBtns.name)                {                    listBtns.transform.GetComponentInChildren<InputField>().text = item.value;                }            }        }    }    public void Save()    {        listModel.Clear();        for (int i = 0; i < listBtns.Count; i++)        {            Model m = new Model() { key = listBtns.name, value = listBtns.transform.GetComponentInChildren<InputField>().text };            listModel.Add(m);        }        //找到当前路径        FileInfo file = new FileInfo(strPath);        //判断有没有文件,有则打开文件,,没有创建后打开文件        StreamWriter sw = file.CreateText();        //ToJson接口将你的列表类传进去,,并自动转换为string类型        string json = JsonMapper.ToJson(listModel);        //将转换好的字符串存进文件,        sw.WriteLine(json);        //注意释放资源        sw.Close();        sw.Dispose();    }}

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class BtnChangeText : MonoBehaviour{    InputField inp;    void Start()    {        BtnNameJson.Instance.listBtns.Add(gameObject);        inp = GetComponentInChildren<InputField>();        inp.onEndEdit.AddListener((string value) =>        {            BtnNameJson.Instance.Save();        });    }   }
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-27 22:06 , Processed in 0.106121 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表