如何在Unity中获取分配给游戏对象的所有材质

tai*_*chi 2 c# unity-game-engine

在Unity中,我们可以通过以下代码获取GameObject所拥有的材质。

Material myMaterial = GetComponent<Renderer>().material;
Run Code Online (Sandbox Code Playgroud)

但通过上面的代码,我们只能为每个游戏对象获取一种材质。

然而,实际上,Unity 游戏对象可以有不止一种材质。

如下图所示 在此输入图像描述

如果每个游戏对象是按面分配的,则可以有多个材质。

我尝试使用下面的代码获取多种材料,但没有成功。

List<Material> myMaterials = GetComponent<Renderer>().material;
Run Code Online (Sandbox Code Playgroud)

有没有办法将多种材质分配给游戏对象?

Ath*_*ras 5

您可以使用Renderer.Materialshttps://docs.unity3d.com/ScriptReference/Renderer-materials.html

List<Material> myMaterials = GetComponent<Renderer>().materials.ToList();
Run Code Online (Sandbox Code Playgroud)