UnityEditorではちゃんと見えるのに、ビルドしてiOSで見たら見た目が違う!!みたいなことになって困ったことはないでしょうか?それはもしかしたらShader Vriantが設定されていないことから、ビルドに適切なShaderが含まれていないことが原因かもしれません。
はじめに
ShaderVariantとはについては、[Unity]ShaderVariantについて~前編:ShaderVariantとは?~ を読んでもらうとわかりやすいかと思います。
前提
- Mac
- 試していませんが、Windowsでも同じ手順だと思います
- Unity 2021.2.11f1
手順
1. VariantのShader、Keywords取得
- Frame Debugger(Window → Analysis → Frame Debugger)を起動します。
- Enableを押します。
- 追加したいオブジェクトが表示されるところを選択し、Shader、Keywordsを取得します。
該当箇所をクリックしてctr+c v で取得できます。
Standard, SubShader #0 DIRECTIONAL LIGHTPROBE_SH SHADOWS_SCREEN
- 他のオブジェクト、他の部位などもある場合は、それぞれShader、Keywordsを取得しておきます。
2. Shader Variantsの設定を作成する
- Create → Shader Variant Collectionを選択して、ShaderVariantsを作成します。
- 必要に応じてリネームしてください。
- 今回のアバターはStandardシェーダーを使っていたので、StandardShaderVariantsに変更しました。
- Add shaderを押して追加したいShader Variantsのシェーダーを選択します。
- 今回はStandardシェーダーを選択しています。
- 右下にある+を押してVariantsを追加します
- Variantsの選択
- Pick shader keywords to narrow down variant list: に表示されている項目から、1.3、1.4で取得したKeywordsの値を選びます。
- Selected keywordsに追加され、Shader variants with these keywords に表示されるVariantsがフィルタされます。
- Shader variants with these keywordsを選択します。
- クリックするとチェックがつきます。
- Keywordsと完全一致するものがない場合もありますが、その場合は次の手順(2.5)のテキストエディタで直接修正します
- Add 1 selected variants を押します
- 4で選択できなかった場合、.shadervarinatsファイルをテキストエディタで開いて、直接Variantsの値を書き込みます。ここでは14行目にSHADOWS_SCREENを足しています。