Unity Texture2Dをpng画像を保存する
UnityEngine.Texture2Dのテクスチャをpngとして保存する方法。
実装
private void CreatePng() { // new Texture2D( Width , Height ); でサイズを指定 Texture2D tex = new Texture2D(32, 32); byte[] png = tex.EncodeToPNG(); // バイト配列として書き込む File.WriteAllBytes(Application.dataPath + "/SavedData/Screen.png", png); }
Application.datapathとは
実行環境によって値が異なります。エディタで実行した時とWebGLやMacなどビルドした時にはパスが変わって来ます。
エディタで実行した時には、<path to project folder>/Assets
となります。普段Unityエディタのプロジェクトウィンドウで見えるAssetsまでのパスとなります。
そこからの相対パスを追加して任意の場所へ保存することができます。
画像の生成
実際に画像を生成して見ます。32*32の画像でx座標に応じたグレイスケールのテクスチャを作りpngとして保存します。
private void CreateTexture() { Texture2D tex = new Texture2D(32, 32); for (int i = 0; i < tex.width; i++) { for (int j = 0; j < tex.height; j++) { float val = i / (tex.width * 1.0f); tex.SetPixel(i, j, new Color(val, val, val)); } } byte[] png = tex.EncodeToPNG(); File.WriteAllBytes(Application.dataPath + "/Saved/Screen.png", png); }