キャラクターの機能停止を表す表現-グレイアウトさせる処理【UUJ】

質問:
キャラクターの機能停止をゲーム的に表すよくある表現として、グレイアウトさせる処理を作成しています。
Mobile Diffuseをシェーダーにしているため、複数のマテリアルを割り当てることで解決しようとしました。
それで意図する表現ができたまではよかったのですが、元の状態に戻すところでつまずいてます。
元に戻そうと追加したマテリアルだけを削っても、マテリアルがない状態(ピンク一色)で表示されてしまうのです。
Inspectorから手動でSizeを1にすれば元に戻るのですが、スクリプトからその状態にする方法がわかりません。
どなたかご存知でしたら、簡単にやり方だけでかまいませんので教えていただけないでしょうか。
またここまで聞いておいてあれなのですが、マテリアルを増やすとDrawcallも増えますので、できればこのやり方は避けたいと思っています。
Unityのバージョンは4.3.4f1です。

回答:
マテリアルの数を1に戻すのであれば
renderer.sharedMaterials = new Material[1] {renderer.sharedMaterial};
でどうでしょう。
その他の方法としては、グレイアウトの時だけ普通のDiffuseに切り替えて色を暗くするとか。グレイアウト用のマテリアルは別途メンバ変数かなんかに持たせておいて。

これは単純にC#の話なのですね。
sharedMaterialも目にはしていたのですかよくわからずに放置していたので、あわせて調べ直しました。
提案していただいた件ですが、sharedMaterialではなくmaterialを使うと、インスタンス化してくれるので、特定のマテリアルだけ色を変えられるという理解で正しいでしょうか。

そうですね。
逆にうっかりmaterialを使うとインスタンス化されちゃってバッチ処理が効かなくなるということもあります。

できました。
マテリアルを変えると全部変わってしまうという固定観念が頭から邪魔してごっちゃになってました。

Comments

comments

スポンサーリンク
336*280px