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でワンランクアップできますよ♪