Unity:SetColorがBuildした後動かなかった話。

問題

モデルをSetColor関数を使用して、動的に色を変更したとき、UnityEditor上のテスト動作時は問題がなかったが、Windows向けビルドした際に表示が行われなかった。

f:id:ThreeStones:20170817225842p:plain
プレイヤーが攻撃したら色が変わるはずだったのに・・・。

流れ

(1) 下記サイトにて_EMISSIONというプロパティを有効にすれば光るマテリアルを設定することができると知る。
Unity5のStandardシェーダのパラメタをスクリプトからいじろうとして丸一日潰れた話 - D.N.A.のおぼえがき

(2) 下記のコードを埋め込む

_render.material.EnableKeyword("_EMISSION"); //キーワード
_render.material.SetColor("_EmissionColor", targetColor); //チーム色に光らせる

(3) テスト実行 
 おっ!きれいに表示された。

(4) ビルドして簡易リリースしよう
 あれ!?色が変わらないだと・・・。

原因

プロパティがビルド時に不要と判断されて読み込まれていなかったため。
(なぜなぜ→色を変更した際に参考にさせていただいたページをよく読んでいなかったことが原因。)

解決

 下記の公式にあるとおり、予めプロパティを設定しておく必要がある。
Unity - マニュアル: スクリプトを使用したマテリアルパラメーターへのアクセスと変更

↓このへんイジイジ・・・。
f:id:ThreeStones:20170817231303p:plain


↓できた!!
f:id:ThreeStones:20170817230938p:plain
 

今後

Emissionというプロパティは一体何なのか・・・。っといまさら。
調べてから使っていこう。

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ