Json读取储存及外置读取txt 和图片

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
    }
 ``
### 如何在Unreal Engine 5中读取外部文本文件 #### 使用相对路径读取自定义文件夹中的内容 为了在Unreal Engine 5 (UE5) 中读取位于特定目录下的文本文件,可以采用相对路径的方式访问`/Content`或其他指定资源捆绑包内的文件位置。对于这种情况,开发者能够通过预设的变量来指代存储文件夹的位置,并利用自定义函数如`Load Text`来进行JSON或者其他格式文本文件的数据加载操作[^1]。 ```cpp FString FilePath = FPaths::ProjectContentDir() + TEXT("MyCustomFolder/myfile.txt"); FString FileContent; if(FFileHelper::LoadFileToString(FileContent, *FilePath)) { UE_LOG(LogTemp, Log, TEXT("File content: %s"), *FileContent); } else { UE_LOG(LogTemp, Warning, TEXT("Failed to read file")); } ``` #### 解决Android平台上的特殊问题 当目标平台为Android时,默认情况下应用程序可能不具备权限去直接获取安装于设备内部储存空间之外的任何文档资料。针对这一情况,在项目的配置界面里找到并启用名为`UseExternalFileDirForUnrealGameFiles` 的选项即可允许引擎正常处理来自SD卡等外置介质里的资产文件[^2]。 #### 利用第三方插件简化流程 除了上述方法以外,还有专门为此设计的工具可以帮助更便捷高效地完成这项工作。例如存在一款适用于UE4但同样兼容UE5环境下的插件,它提供了十个蓝图节点以及对应的源码片段用于执行各种类型的IO任务;即使是最基础的应用场景也能轻松应对[^3]。 #### OCR技术扩展应用范围 如果涉及到的是图像形式的文字材料,则可借助像UPOCR这样的高级特性——该组件不仅限于普通的字符串解析,还具备从纹理对象乃至原始字节数组中提取字符的能力,从而极大地拓宽了解析来源的可能性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值