結論
できなかったので,Rendering Modeごとに別ゲームオブジェクトを作成して対応.
奮闘
作戦1.RenderingModeをAnimationで変更
結果,できない.
作戦2.RenderingModeをScriptで変更
こちらの方が紹介しているように,Scriptで変更することは可能.
しかし,Editor上ではうまくいってもビルドした後ではうまくいかない.これについては,Unityマニュアルに下記の記述がある.
プロジェクト内に一致する機能の組合せを持つマテリアルが無かった場合、視差マッピングは、たとえエディター上では機能しているように見えたとしても、最終的なビルドでは有効にならない、という事です。なぜなら、バリアントが要求されたように見えず、ビルドから省かれてしまうからです。
Standard Shaderは内部的に、沢山のさまざまなシェーダーが一つにまとめられており,その組み合わせは、アクティブ・非アクティブの切り替えによって変える事ができる.
そのため,ビルド時にはシーン上で使われていないシェーダーバリアントはUnity からは、まだ使っていないように見えるため、ビルドから除外されてしまう.
例えば,Scene上でRendering ModeをOpaqueにしたものをScriptでFadeに変更しようとしても,ビルド時には,Fadeのバリアントを読んでくれない.なぜなら,Scene上でFadeのRendering ModeのMaterialを使っていないためだ.
作戦3.静的にする
Rendering Modeごとに別ゲームオブジェクトを作成し,ゲームオブジェクトのアクティブ・非アクティブの切り替えによって対応することで解決.