在 Unity 中加载动态创建的纹理

问题描述

我正在使用 Vuforia 在 Unity 中创建一个项目,它让人们可以动态创建可跟踪的图像,然后让您创建一个显示。这些图像和显示被转换为纹理并作为材质应用于四边形。

我试图做到这样,当创建纹理时,它们会被保存,以便当应用程序重新启动时,它们会被存储和记住。到目前为止我有代码

private void SaveTexturesToJpg(Texture2D texturetoSave)
{
    byte[] bytes = texturetoSave.EncodetoJPG();
    string filepath = Application.persistentDataPath + "/JPG_" + _nameCounter + ".jpg";
    _nameCounter++;
    File.WriteallBytes(filepath,bytes);
}

这会将纹理保存到设备中的文件夹中,我知道我可以使用 File.ReadAllBytes() 加载图像,但我不明白如何将其作为纹理应用。

不胜感激。

解决方法

如果您有一个包含纹理数据的字节数组,您可以使用 LoadRawTextureData()

将数据加载到您的纹理中

首先使用您需要的大小和格式创建纹理,然后加载数据。没有 mipmap 的 512x512 纹理将是这样的:

Texture2D tex = new Texture2D(512,512,TextureFormat.RGBA32,false);
tex.LoadRawTextureData(dataArray);
tex.Apply();

之后,您可以将纹理应用于您的材料