0

我们正面临 Unity 的问题。我们正在开发一个 IPAD 应用程序。一个功能是截取屏幕截图并将其用作按钮。因为IPAD里的树目录里面不存在Resources文件夹,所以我们不能使用“Resources.Load”,即便如此,因为这个功能必须要怎么工作,所以一开始纹理是不可用的,所以我们最初不能把它放在 Resources 文件夹中。我们尝试了几种解决方案,比如在 IPAD 中创建一个 Resources 文件夹(在 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);
}

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

4

1 回答 1

1

您可以尝试以下方法:

Texture2D tex = new Texture2D(Screen.width, Screen.height);
tex.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
tex.Apply();

并扣上tex按钮。

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

// Encode texture into PNG
var bytes = tex.EncodeToPNG();
Destroy( tex );

您将拥有一个可以随意使用的 PNG 文件。

当您保存文件并希望从 Documents 文件夹中的某个位置加载它时,您可以尝试以下操作:

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);

这些 X 和 Y 是您的应用程序的 ID 代码。运行应用程序一次后,您可以在 Application.dataPath. 您可以在那里窥视并检查您需要填写的内容。

于 2013-04-25T11:43:00.690 回答