読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

non-readable 'TextureName' texture is not allowed!【Unity】【エディタ拡張】【トラブルシューティング】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 5.1.0f3 Personal

はじめに

今回はテクスチャを読み込み、インスタンス化しようとした際に

non-readable 'TextureName' texture is not allowed!

と表示される場合の対処法です。


f:id:kan_kikuchi:20150828134534p:plain

Texture texture = Instantiate(Resources.Load ("Black")) as Texture;


上記の画像はBlackというテクスチャでエラーが起きた場合です。


原因と対処法

原因はテクスチャの設定でRead/Writeが有効になっていないことです。


なので対象のテクスチャを選択し、インスペクターでTextureTypeをAdvancedに変更し、

Read/Writeにチェックを入れるとエラーが出なくなります。


f:id:kan_kikuchi:20150828134748j:plain


この問題はTextureTypeがAdvancedでなくとも起こります。

その場合は、一度TextureTypeをAdvancedにしてRead/Writeにチェックを入れた後、

任意のTextureTypeに変更するとエラーが出なくなります。

TextureImporter

毎度設定するのは面倒なのでインポート時に設定すると楽です。

インポート時の設定方法は以下の記事を参照のこと。



OnPreprocessTextureで画像ファイルの設定を行えるので、

そこでTextureImporterのisReadableをtrueにします。

void OnPreprocessTexture(){
  TextureImporter textureImporter = assetImporter as TextureImporter;
  textureImporter.isReadable = true;
}


これ以降、インポートしたファイルは全てRead/Writeにチェックを入れた状態になります。