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

Unityで、Editorではシェーダーがちゃんと実行されているのに実機ではシェーダーがちゃんと実行されなくてハマった件

Unity

まず第一に、

Shader.Find( シェーダー名 )

としていたのですが、これが失敗していました。初歩的ですいません。

これはシーンから直接参照されていないリソースは、Resourcesフォルダに入れておかないとアプリに組み込まれないからです。

というわけで、Resourcesフォルダ以下に置いたのに、それでもうまくいかず...

いろいろ調べた結果わかったのは、どうやら、シェーダーの静的なテクスチャ参照は実機では無視される... ようです。(たぶん)

f:id:wkpn:20160822164936p:plain

図のWind Textureというテクスチャを表示するようにしてみると真っ白(デフォルト値)になっていたので、そういうことなのだと思います。

下のようにマテリアルに対して、テクスチャを設定してあげることでうまく表示されるようになりました。

Texture2D texture = Resources.Load<Texture2D>( "Shader/windTexture" );
material.SetTexture( "_WindTex", texture );