unity 加载Json读取储存及外置读取txt 图片静态工具
public static class JsonHelper
{
public static string ToPrettyJson<T>(T obj) where T : class
{
return JsonUtility.ToJson(obj, true);
}
public static T FromPrettyJson<T>(string json) where T : class
{
return JsonUtility.FromJson<T>(json);
}
#region 读取JSON文件
/// <summary>
/// 保存json
/// </summary>
/// <typeparam name="T">数据结构类</typeparam>
/// <param name="pathFile">文件夹名字</param>
/// <param name="fileName">文件名字</param>
/// <param name="obj">对应数据结构</param>
public static void OnWriteSaveJson<T>(string pathFile, string fileName, T obj)
{
string json = JsonUtility.ToJson(obj, true);
string path = System.IO.Path.Combine(UnityEngine.Application.streamingAssetsPath, pathFile , $"{fileName}.json");
path = path.Replace("\\", "/");
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path));
System.IO.File.WriteAllText(path, json);
Debug.Log("保存成功: " + path + json);
}
/// <summary>
/// 读取加载json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="pathFile">文件夹类型名字</param>
/// <param name="jsonName">文件名字</param>
/// <param name="obj">类型</param>
/// <returns></returns>
public static T OnReadLoadJson<T>(string pathFile, string jsonName, T obj)
{
string path = System.IO.Path.Combine(Application.streamingAssetsPath, pathFile + "/");
string[] jsonFiles = System.IO.Directory.GetFiles(path, "*.json");
string fullPath = Path.Combine(path, jsonName + ".json");
if (File.Exists(fullPath))
{
string jsonContent = File.ReadAllText(fullPath); // 读取 JSON 文件内容
obj = JsonUtility.FromJson<T>(jsonContent);
}
return obj;
}
#endregion
#region 读取外置文件
/// <summary>
/// 读取外置文件 txt
/// </summary>
/// <param name="FileName"></param>
/// <param name="useId"></param>
public static string OnReadLoadText(string FileName, string useId = "UseID")
{
string path = Path.Combine(Application.dataPath, "..", "Configs", FileName, $"{useId}.txt");
string txtContent = "";
if (File.Exists(path))
{
txtContent = File.ReadAllText(path);
}
return txtContent;
}
/// <summary>
/// 加载图片
/// </summary>
/// <param name="FileName">子文件夹</param>
/// <param name="picName">图片名</param>
/// <returns></returns>
public static Sprite OnReadLoadPicture(string FileName, string picName)
{
string path = Path.Combine(Application.dataPath, "..", "Configs", FileName, $"{picName}.jpg");
byte[] bytes = File.ReadAllBytes(path);
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(bytes);
Sprite sp = Sprite.Create(
tex, // 源纹理
new Rect(0, 0, tex.width, tex.height), // 截图区域(整张图)
new Vector2(0.5f, 0.5f) // pivot 中心点(0~1)
);
return sp;
}
#endregion
}
``
1万+

被折叠的 条评论
为什么被折叠?



