如何在 C# Unity 中加载带有扩展名(.json)的资产文件夹中的任何文件
Posted
技术标签:
【中文标题】如何在 C# Unity 中加载带有扩展名(.json)的资产文件夹中的任何文件【英文标题】:How do I load any file from assets folder with extension(.json) in C# Unity 【发布时间】:2021-11-26 13:47:14 【问题描述】:我正在尝试从我的资产目录中加载多个扩展名为 .JSON 的文件,并希望在我的游戏的 UI 元素中显示, 就像我在 Unity 的 assets 文件夹中创建了一些 JSON 文件,我只想加载扩展名为 .json 的文件,还想将该 JSON 文件转换为 Base64,然后转换为图像纹理。
我试过了:
bool check1 = file.EndsWith (".json");
if (check1)
Debug.Log ("JSON File found: " + file);
请给我举个例子,谢谢。
Unity 版本:2020.3.11f1, 语言:C#
【问题讨论】:
为什么要将图像存储为 JSON? @oRoiDev 我必须将此数据发送到服务器。所以我不能直接在 web 请求中发送纹理,我需要将其转换为 basestring,并且需要将整个数据转换为 JSON。 @AliHussain 为什么不能在 webrequest 中发送二进制数据? 【参考方案1】:如果你想在运行时打开一些东西,我相信它必须位于资源文件夹中。这通常被认为是一种不好的做法,所以我会尝试绕过它。
现在,我不确定您到底想做什么,但如果您想将纹理发送到服务器,那么我会研究 JsonUtility 类和可序列化类。纹理也可以在运行时编码为 PNG,因此它适合 Serializable 类。
您实际上会在执行过程中生成一个 json 请求,其结构由您创建的类定义
编辑:这是从纹理生成 json 编码字符串的代码
using UnityEngine.Serialization;
//the struct
[System.Serializable]
public struct SerializableExample
public string name;
public byte[] tex;
//code for generating json with image
string serializeJsonImage(string name, Texture2d tex)
SerializableExample example = new SerializableExample();
example.name = "example name";
example.tex = tex.EncodeToPng();
return JsonUtility.ToJson(example);
【讨论】:
你能举个例子吗,对理解有很大帮助,是Unity和C#的新手。 代码在编辑中以上是关于如何在 C# Unity 中加载带有扩展名(.json)的资产文件夹中的任何文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在按钮单击事件中的模式弹出扩展器中的iframe中加载页面?
如何在我的组件VUE 2(webpack)中加载外部js文件?