StandardのEMISSION
3Dオブジェクトを光らせる方法の1つに、ビルドインシェーダのStandardシェーダのEMISSIONを使う方法がある。
スクリプトからStandardのEMISSIONを切り替える方法
public void SetEmission(bool emission, Color color) { r = box.GetComponent<MeshRenderer>(); if (emission) { r.material.EnableKeyword("_EMISSION"); r.material.SetColor("_EmissionColor", color); } else { r.material.DisableKeyword("_EMISSION"); } }
上記のように、
一度EnableKeyword
で「EMISSION」を有効にする必要にしてから、色を設定する。
「EMISSION」を有効にしないと、いくら色をセットしても変わらないので注意!
エディタでは効くのに、android実機で効いていない場合
最初はEMISSIONを無効にしておいて、あとからスクリプトで有効にしたい場合に発生した。 対処方法は、Resouces側に、もともとEMISSIONを有効にしたマテリアルを配置しておくことで対処できる。
これは、EMISSION無効状態のマテリアルしかプロジェクトに存在しないと、無効状態のシェーダーしかビルドされないため発生する。
予め有効状態のマテリアルをプロジェクト内に配置すればビルド時に有効状態のシャーダも一緒にビルドされることになるので、問題を解決できる!