2016-06-14 1 views
0

Unityプロジェクトで重要な変更を少ししてしまいました。 私は8つの材料を持つオブジェクトを持っています、私はボタンを押したときに材料番号5を変更したいと思います。 次のコードは動作しません:Unityの資料を変更するには

objectToPaint.GetComponent<Renderer>().materials[4] = availableMaterials[i]; 

私が行うとき:

objectToPaint.GetComponent<Renderer>().material = availableMaterials[i]; 

それが唯一の第一材料を変更しても証明します、トリガーが完全に働いています。助言がありますか?あなたはrenderer.materialsを変更する必要が

+1

**私はそれに8つのマテリアルを持つオブジェクトを持っています**そのオブジェクトが3Dメッシュであればそれは良くありません。テクスチャを1つに焼き付けて、1つのテクスチャで1つのマテリアルを使用する必要があります。これをやり直さないと、後であなたのゲームがなぜ遅すぎるのかを尋ねることに戻ります。 – Programmer

+0

それはゲームではありません、VRプロジェクト、簡単なデモです。 – arti

答えて

0

を動作するはずですので、試行やエラーの多くは後に、あなただけの1を変更することはできませんことを発見しました材料はアレイ状である。一時的な配列に配列全体を割り当て、必要なマテリアルを変更してから一時的な配列をオブジェクトに割り当てる必要がありました。

3

は、代わりに私が検討したようrenderer.material

を変更するので、これは

Material[] mats = renderer.materials; 
mats[4] = availableMaterials[i]; 
renderer.materials = mats; 
関連する問題