Unity3d IOS(IPad)如何将运行时创建的屏幕截图加载到纹理或纹理2D中

Unity3d IOS(IPad)如何将运行时创建的屏幕截图加载到纹理或纹理2D中,unity3d,Unity3d,我们面临着一个团结一致的问题。我们正在开发一款IPAD应用程序。其中一个功能是截图并将其用作按钮。因为IPAD中的树目录不存在资源文件夹,所以我们不能使用“Resources.Load”,即使如此,因为这个功能必须工作,纹理在一开始就不可用,所以我们不能将它最初放在资源文件夹中。我们已经尝试了几种解决方案,比如在IPAD中创建一个资源文件夹(在Documents文件夹中)并尝试从中加载纹理,甚至这段代码: public Texture LoadTextureFromFile(string fil

我们面临着一个团结一致的问题。我们正在开发一款IPAD应用程序。其中一个功能是截图并将其用作按钮。因为IPAD中的树目录不存在资源文件夹,所以我们不能使用“Resources.Load”,即使如此,因为这个功能必须工作,纹理在一开始就不可用,所以我们不能将它最初放在资源文件夹中。我们已经尝试了几种解决方案,比如在IPAD中创建一个资源文件夹(在Documents文件夹中)并尝试从中加载纹理,甚至这段代码:

public Texture LoadTextureFromFile(string filename)
{
    Texture2D texture = new Texture2D(1024, 768);
    FileStream fs = new FileStream(filename, FileMode.Open,
FileAccess.Read);

    byte[] imageData = new byte[fs.Length];
    fs.Read(imageData, 0, (int)fs.Length);
    texture.LoadImage(imageData);
    return (texture as Texture);
}

任何帮助都将不胜感激。这个问题已经困扰我们好几天了

您可以尝试以下方法:

Texture2D tex = new Texture2D(Screen.width, Screen.height);
tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
tex.Apply();
WWW imageToLoadPath = new WWW(/var/mobile/Applications/XXXXYYYY-XXXX-XXXX-XXXX-XXXXYYYYZZZZ/Documents/sample.png) //rendering texture
yield return imageToLoadPath; // <- the actual load of file
imageToLoadPath.LoadImageIntoTexture(buttonObject.renderer.material.mainTexture as Texture2D);
并将
tex
置于按钮上

如果要将其保存到文件以供以后使用,可以执行以下操作:

// Encode texture into PNG
var bytes = tex.EncodeToPNG();
Destroy( tex );
您将拥有一个PNG文件,可以随意使用

当您保存文件并希望将其从“文档”文件夹加载到某个位置时,可以尝试以下操作:

Texture2D tex = new Texture2D(Screen.width, Screen.height);
tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
tex.Apply();
WWW imageToLoadPath = new WWW(/var/mobile/Applications/XXXXYYYY-XXXX-XXXX-XXXX-XXXXYYYYZZZZ/Documents/sample.png) //rendering texture
yield return imageToLoadPath; // <- the actual load of file
imageToLoadPath.LoadImageIntoTexture(buttonObject.renderer.material.mainTexture as Texture2D);
WWW-imageToLoadPath=new-WWW(/var/mobile/Applications/xxxxyyyyy-XXXX-XXXX-XXXX-xxxxyyyyyzzzz/Documents/sample.png)//渲染纹理

返回imageToLoadPath;//嗨,约佳。谢谢你的建议,但这不是我们需要的。它工作,一个屏幕截图所需的大小是采取和正确显示在按钮。但我们需要在下次启动应用程序时加载相同的屏幕截图。问题是如何从IPAD的Documents文件夹中加载此图像,最初无法将其放入参考资料中folder@user2319223查看我添加到答案中的代码。这对您有帮助吗?请注意,您可以使用相同的WWW对象将文件写入您自己选择的指定文件夹,例如Screenshot-folder.Hi。是的,最后我们得到了使用WW类加载的纹理。谢谢你everything@user2319223很高兴我能帮忙!如果您愿意,请将答案标记为已接受,以便搜索类似问题的人可以参考此答案。