如何在 Unity 中更改材质

art*_*rti 1 c# unity-game-engine

我在我的 Unity 项目中遇到了一些实质性的变化。我有一个带有 8 个材质的对象,我想在按下按钮时更改材质编号 5。以下代码不起作用:

objectToPaint.GetComponent<Renderer>().materials[4] = availableMaterials[i];
Run Code Online (Sandbox Code Playgroud)

当我做:

objectToPaint.GetComponent<Renderer>().material = availableMaterials[i];
Run Code Online (Sandbox Code Playgroud)

它只会改变第一种材料,并证明触发器工作正常。有什么建议?

Val*_*tin 6

你必须改变renderer.materials,而不是改变renderer.material

我认为,这应该有效

Material[] mats = renderer.materials; 
mats[4] = availableMaterials[i]; 
renderer.materials = mats;
Run Code Online (Sandbox Code Playgroud)


art*_*rti 5

所以经过多次尝试和错误,发现您不能只更改数组中的 1 个材料。我必须将整个数组分配给临时数组,更改所需的材料,然后将临时数组分配给对象。