【Unity】スクリプトでテクスチャから1ピクセルほど色をサンプリングしたい!!
自動化しておきたいのでスクリプトでやりたい!
(Texture is not readable)対策
Unityのエディタ上で一度Read/WriteEnableにチェックを入れる必要があるみたいです。
読み込んだ後のテクスチャに対してこのチェックを入れる方法を探してみたのですが、見つかりませんでした・・・
ということでエディタ上からチェックを入れましょう。
スクリプトでテクスチャを触る系の記事はこれが載ってました。
これもスクリプトでやりたい。
インポート設定をちょちょいとすればいいそうです。
UnityのEditor上でTextureを編集する際にRead/Write Enabledを書き換えたくない - n-yoda's blog
ここからが本題です。
すでにインポートしているテクスチャなので・・・
インポート済みのテクスチャを何とかしたい場合にどうすればいいの? というのを調べてみました。
新しく作ったテクスチャは触ることができる。
/* * テクスチャをスクリプトでロードした状態から色をサンプリングしたいときに使う */ //エディタ上にある色をサンプリングしたいテクスチャ var test = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/Texture/test.png"); //テクスチャサイズとフォーマットは元のテクスチャと同じにする Texture2D tex2 = new Texture2D(test.width, test.height, test.format, true); Graphics.CopyTexture(test, tex2); //ピクセル位置を指定して色をサンプリングする var color = tex2.GetPixel(1200, 600); //2048x2048のテクスチャ使ってます。 //Unityエディタ上で確認 var material = AssetDatabase.LoadAssetAtPath<Material>("Assets/Texture/M_Test.mat"); material.SetColor("_Color", color); Debug.Log(color);
これで1ピクセルサンプリングできた!
これが・・・
こうなる