如何更改第二位置的材料?

时间:2019-07-06 19:03:19

标签: c# unity3d game-development renderer

我想在位置2上更改材质,当我在代码中更改材质时,它在位置0而不是位置1上更改。

我不知道如何在位置1上改变材质。.这是在位置[0]上改变材质的代码

 public Material[] materials;
public Renderer rend;

// Start is called before the first frame update
void Start()
{
    rend= GetComponent<Renderer>();   
}
// Update is called once per frame
void Update()
{
 rend.material = materials[1];  
}

我想更改这张图片上名称为New Material 2的材质 到我在代码中定义的材料。

enter image description here

非常感谢您的社区:)

1 个答案:

答案 0 :(得分:1)

它在索引0而不是索引1上更改,因为您使用的是rend.material而不是rend.materials

public class MaterialChanger : MonoBehaviour {

public Material[] Materials;
public MeshRenderer MeshRenderer;

void Start() {
    MeshRenderer = gameObject.GetComponent<MeshRenderer>();        
}

void Update() {
    int requredMaterialIndex = 1; //this is just test value
    MeshRenderer.materials[1] = Materials[requredMaterialIndex];   
}

而且我建议您总是为了提高效率而始终使用Meshrenderer而不是Renderer