texture2D.EncodeToPNG();
↑でいつもErrorになってしまう方へ。
Google先生に聞いても、答えは「Inspectorから操作して解決できる。」
いやいや、自分Scriptで解決したいんです![]()
という方はお試しあれ![]()
・Console上のError
ArgumentException: Texture '' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.
![]()
・Unity公式では?
こちらをご覧ください。
いや、解決しないぞ![]()
・対処方法
下記のメソッドを呼び出せばOK!
Texture2D createReadabeTexture2D(Texture2D texture2d)
{
RenderTexture renderTexture = RenderTexture.GetTemporary(
texture2d.width,
texture2d.height,
0,
RenderTextureFormat.Default,
RenderTextureReadWrite.Linear);
Graphics.Blit(texture2d, renderTexture);
RenderTexture previous = RenderTexture.active;
RenderTexture.active = renderTexture;
Texture2D readableTextur2D = new Texture2D(texture2d.width, texture2d.height);
readableTextur2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
readableTextur2D.Apply();
RenderTexture.active = previous;
RenderTexture.ReleaseTemporary(renderTexture);
return readableTextur2D;
}
呼び出し元
byte[] pngData = createReadabeTexture2D(notReadableTexture2D).EncodeToPNG();
もっと深くしりたい方は公式をどうぞ。
Texture関連をきちんと理解するとUnityでワンランクアップできますよ♪