2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity Material Standerd ShaderのRendering ModeをAnimationでいじろうとした結果

2
Last updated at Posted at 2017-08-09

結論

できなかったので,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ごとに別ゲームオブジェクトを作成し,ゲームオブジェクトのアクティブ・非アクティブの切り替えによって対応することで解決.

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?