DrawCallが増えた事例を発見したのでメモ。
transform.renderer.material.color = Color.grey;
「マテリアルを多く使うとDrawCallが増えるだろう」と思って
1つのマテリアルの色を変えることでバリエーションを出そうとしました。
だけど、このようにマテリアルの色を変えるだけでもDrawCallが増えました。
これは意外だったー。
どう対処しようかな・・・。
2012年07月27日
[Unity] DrawCallメモ(transform.renderer.material.color)
posted by be-style at 17:31| Comment(2)
| Unity
rendererのmaterialを触ってしまうとマテリアルの複製がされてしまいます。
そのため、マテリアルを複製しないでマテリアルのパラメータを変更するには、
renderer.sharedMaterialを使用する必要があります。
しかし、これだと共通のマテリアルのパラメータ全てが変わってしまうため、個々のGameObjectのメッシュの色を変更するというような事は出来ません。
これを解決する方法として、Unity3.5から追加されたrenderer.SetPropertyBlockを使用する方法があります。
しかし、SetPropertyBlockのリファレンスには下記URL先のように何も記載がありません。
http://docs.unity3d.com/Documentation/ScriptReference/Renderer.SetPropertyBlock.html
ですが、実際に使ってブログの記事にされている方もいらっしゃるので、下記URLなどを参考にして頂けると素早く実装が出来ると思います。
http://d.hatena.ne.jp/nakamura001/20120418/1334767263
ちなみに私個人で確認した不具合ですが、Unity3.5から追加されたParticleSystemではSetPropertyBlockを使用してもシェーダのパラメータを設定することが出来ませんでした。
少し長くなってしまい申し訳ありませんが、何かの手助けになればと思い、コメントさせて頂きました。
それでは。
早速、SetPropertyBlock() を使って検証してみました。
http://blog.be-style.jpn.com/article/57911924.html?1346395285
ですが、肝である「マテリアルが複製されたかどうか」を調べる方法がわからず検証が途中で止まってしまいました(汗
宜しければ、マテリアルが複製されたかどうかを調べる方法を
ご教授いただけないでしょうか。