using System;
using System.IO;
using UnityEngine;
[Serializable]
//Json工具类 负责处理游戏对象与json字符串之间的序列化与反序列化
public class JsonTool
{
//默认保存数据的库的名字
private const string DefaultName="GameData.json";
//将json字符串持久化到默认文件
public static void Save(string jsonStr)
{
Save(DefaultName,jsonStr);
}
//将json字符串持久化到指定文件
public static void Save(string fileName, string jsonStr)
{
//文件保存的路径
string filePath = Application.dataPath + @"/" + fileName;
//保存字符串到文件中,如果发现该路径下没有文件,就会自动创建一个该文件
File.WriteAllText(filePath,jsonStr);
}
//从默认文件中读取json字符串
public static string Load()
{
return Load(DefaultName);
}
//从文件中读取json字符串
public static string Load(string fileName)
{
//文件读取路径
string filePath = Application.dataPath + @"/" + fileName;
//文件中读取字符串并返回
return File.ReadAllText(filePath);
}
//序列化
public static string Serializable(object obj)
{
return JsonUtility.ToJson(obj);
}
//反序列化
public static T DeSerializable<T>(string jsonStr)where T:class
{
return JsonUtility.FromJson<T>(jsonStr);
}
}
using System;--------------屠龙刀--------------
using UnityEngine;
[Serializable]
public class Knife
{
public string name;
public int attack;
public float price;
public int naijiu;
public string msg;
public Vector3 _transform;
public Quaternion rota;
}
public class KnifeDragon: MonoBehaviour
{
public Knife _knife;
private void Update()
{
_knife.rota = transform.rotation;
_knife._transform = transform.position;
if (Input.GetKeyDown(KeyCode.K))
{
_knife.naijiu -= 100;
}
}
}
using UnityEngine;
using UnityEngine.UI;
public class KnifeManage : MonoBehaviour
{
public Text knifeText;
public GameObject knifePre;
//序列化
public void Serialize()
{
GameObject knifeobj=GameObject.FindWithTag("Knife");
Knife knife = knifeobj.GetComponent<KnifeDragon>()._knife;
string knifestr = JsonTool.Serializable(knife);
knifeText.text = knifestr;
JsonTool.Save("KnifeDragon.json",knifestr);
}
//反序列化
public void DesSerialize()
{
GameObject objknife=GameObject.FindWithTag("Knife");
if (objknife!=null)
{
Destroy(objknife);
}
string knifeStr = JsonTool.Load("KnifeDragon.json");
knifeText.text = knifeStr;
Knife knife = JsonTool.DeSerializable<Knife>(knifeStr);
objknife = Instantiate(knifePre, knife._transform, knife.rota);
objknife.name = knife.msg;
objknife.GetComponent<KnifeDragon>()._knife=knife;
}
}