如何在Unity c#脚本中将材质设置为游戏对象?

时间:2018-04-15 19:32:17

标签: c# unity3d

我正在尝试在游戏中将材质设置为游戏对象,我在脚本中创建了对象,因此我无法通过统一手动设置它。所有这一切都必须是脚本等我的代码是

void Start()
{


    GameObject cube2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
    cube2.transform.position = new Vector3(12f, -3f, -82.5f);


}

所以我将我创建的立方体设置为“cube2”。所以我试图做的就是把它设置为红色。我目前有一个名为red的材料。谢谢。

3 个答案:

答案 0 :(得分:1)

首先,您必须获得对材料的引用。您可以在组件上使用公共变量public Material yourMaterial;并使用拖放界面中的材质,或者您可以通过以下代码获取它:

// in the Start() method
Material yourMaterial = Resources.Load("red", typeof(Material)) as Material;

然后,您可以使用renderer.material字段将其分配给GameObject:

cube2.renderer.material = yourMaterial;

N.B。 :

我变老了...... .renderer已经过时了,应该使用.GetComponent<Renderer>()代替@Chopi建议。

编辑:

要使Resources.Load生效,您的资料red.mat必须位于Resources文件夹中。如果它位于像资源/材料/ red.mat&#39;这样的子文件夹中,那么这将导致:

Material yourMaterial = Resources.Load("materials/red", typeof(Material)) as Material;

答案 1 :(得分:1)

您可以使用公共变量

从代码中进行设置
public Material myMaterial;
void Start()
{
    GameObject cube2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
    cube2.transform.position = new Vector3(12f, -3f, -82.5f);
    cube2.GetComponent<Renderer>().material = myMaterial;
}

正如Pac0所说,您也可以使用Resource.Load来避免使用公共变量,但在这种情况下,您需要将材料存储在“Resources”文件夹中。

答案 2 :(得分:0)

你必须在资源文件夹中放入一些东西,并按照 Unity 文档中的名称取它的名字 https://docs.unity3d.com/ScriptReference/Resources.Load.html