我正在尝试在游戏中将材质设置为游戏对象,我在脚本中创建了对象,因此我无法通过统一手动设置它。所有这一切都必须是脚本等我的代码是
void Start()
{
GameObject cube2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube2.transform.position = new Vector3(12f, -3f, -82.5f);
}
所以我将我创建的立方体设置为“cube2”。所以我试图做的就是把它设置为红色。我目前有一个名为red的材料。谢谢。
答案 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