【问题标题】:How do I load any file from assets folder with extension(.json) in C# Unity如何在 C# Unity 中加载带有扩展名(.json)的资产文件夹中的任何文件
【发布时间】: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 中发送二进制数据?

标签: c# json unity3d file-io base64


【解决方案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#的新手。
  • 代码在编辑中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多