この記事でのバージョン
Unity 5.2.2f1 Personal
はじめに
今回はテクスチャを作成し、編集しようとしたときに
ReadPixels was called to read pixels from system frame buffer, while not inside drawing frame.
と表示される場合の対処法です。
WaitForEndOfFrame
以下のようにテクスチャを生成し、
ReadPixelsを実行した時にタイトルのエラーが発生することがあります
Texture2D texture = new Texture2D (100, 100, TextureFormat.RGB24, false); //ここでエラー texture.ReadPixels (new Rect (0, 0, 32, 32), 0, 0, false); texture.SetPixel (0, 0, Color.white); texture.Apply ();
どうやら描画が終わってからReadPixels を行わなければいけないようです。
WaitForEndOfFrameを使えばレンダリングが完了するまで待てるようなので、
以下のように
ReadPixelsを実行するより前にWaitForEndOfFrameを使えばエラーは発生しなくなります。
Texture2D texture = new Texture2D (100, 100, TextureFormat.RGB24, false); //レンダリングが完了するまで待つ yield return new WaitForEndOfFrame(); texture.ReadPixels (new Rect (0, 0, 32, 32), 0, 0, false); texture.SetPixel (0, 0, Color.white); texture.Apply ();