Shader.Findでエラーが発生してしまう場合

Unity Editor上では問題なく動作しているのに、ビルドしたゲームのShader.Findでエラーとなる場合はAlways Included Shadersを設定するとうまくいく場合があるそうです。

var s = Shader.Find("Custom/Example");
Assert.IsNotNull(s); //error

Always Included Shadersの設定

[Edit] » [Project Settings..]

を実行して、GraphicsタブのBuilt-in shader settingsAlways Included Shadersの項目に使いたいShaderを登録すると良いそうです。

リンク

Unity – Scripting API: Shader.Find
https://docs.unity3d.com/ScriptReference/Shader.Find.html

関連記事

Shader内でTiling/Offset値の取得方法
UnityのShaderプログラム内で「Tiling」や「Offset」の値を知りたい場合は{TextureName}_STの値を参照すると良いそうです。 sampler2D _MainTex; float4 _MainTex_ST; _MainTex_ST.x; // Tilingのxの値 _MainTex_ST.y; // Tilingのyの値 _MainTex_ST.z; //...

Tiling/Offset値をスクリプトから設定する方法
MaterialのTexture設定にあるTilingとOffsetの値をスクリプトから設定したい場合はSetTextureScaleやSetTextureOffsetを使って次のような感じでできるそうです。 Material material; // Tiling material.SetTextureScale("_MainTex", new Vector2(1.0f, 2.0f...

コメントを残す

メールアドレスが公開されることはありません。