この記事でのバージョン
Unity 5.1.0f3 Personal
はじめに
今回はテクスチャを読み込み、インスタンス化しようとした際に
non-readable 'TextureName' texture is not allowed!
と表示される場合の対処法です。
Texture texture = Instantiate(Resources.Load ("Black")) as Texture;
上記の画像はBlackというテクスチャでエラーが起きた場合です。
原因と対処法
原因はテクスチャの設定でRead/Writeが有効になっていないことです。
なので対象のテクスチャを選択し、インスペクターでTextureTypeをAdvancedに変更し、
Read/Writeにチェックを入れるとエラーが出なくなります。
この問題はTextureTypeがAdvancedでなくとも起こります。
その場合は、一度TextureTypeをAdvancedにしてRead/Writeにチェックを入れた後、
任意のTextureTypeに変更するとエラーが出なくなります。
TextureImporter
毎度設定するのは面倒なのでインポート時に設定すると楽です。
インポート時の設定方法は以下の記事を参照のこと。
OnPreprocessTextureで画像ファイルの設定を行えるので、
そこでTextureImporterのisReadableをtrueにします。
void OnPreprocessTexture(){ TextureImporter textureImporter = assetImporter as TextureImporter; textureImporter.isReadable = true; }
これ以降、インポートしたファイルは全てRead/Writeにチェックを入れた状態になります。