我是一个非常新的Unity3d,我有一个预制件,其中包含6个四边形,使它成为一个立方体.I想要添加图像纹理的不同面的立方体。我正在从网络服务获得图像,所以,我必须添加或更改脚本中的材料。我面临的问题是,我无法在gameObject中找到材料属性。
我试过下面的代码:
using UnityEngine;
using System.Collections;
public class shelfRuntime : MonoBehaviour {
public GameObject bottle;
public GameObject newBottle;
// Use this for initialization
void Start () {
iterateChildren(newBottle.transform.root);
GameObject rocketClone = (GameObject)Instantiate(bottle, bottle.transform.position, bottle.transform.rotation);
rocketClone.transform.localScale += new Vector3(1, 1, 1);
GameObject newBottleInMaking = (GameObject)Instantiate(newBottle, newBottle.transform.position, newBottle.transform.rotation);
Transform[] allChildren = newBottleInMaking.GetComponentsInChildren<Transform>();
foreach (Transform child in allChildren)
{
// do whatever with child transform here
}
}
void iterateChildren(Transform trans)
{
Debug.Log(trans.name);
if (trans.name == "Back") {
var ting = trans.gameObject.GetComponent<Renderer>();
// trans.renderer.material // there is no material property here
}
// Do whatever logic you want on child objects here
if (trans.childCount == 0) return;
foreach (Transform tran in trans)
{
iterateChildren(tran);
}
}
// Update is called once per frame
void Update () {
}
}如何将材质设置为四边形?在我的预制板里有6个四边形。
发布于 2016-10-08 16:25:21
您不能再在Unity中直接访问某些组件。必须使用GetComponent获取零部件(Renderer),然后从其中访问材质。
trans.renderer.material = ....应更改为
trans.GetComponent<Renderer>().material = yourNewMaterial;最后,当在Unity中创建立方体或四边形时,MeshRenderer会自动附加到它们上,而不是Renderer。因此,使用GetComponent<Renderer>()可能会出现运行时错误。请改用MeshRenderer。
trans.GetComponent<MeshRenderer>().material = yourNewMaterial;在运行时创建材料的:
Material myNewMaterial = new Material(Shader.Find("Standard"));下面的示例将创建一个材质,将标准着色器指定给它,然后在将其应用于GameObject之前将纹理更改为myTexture变量中的纹理。
public Texture myTexture;
void Start()
{
//Find the Standard Shader
Material myNewMaterial = new Material(Shader.Find("Standard"));
//Set Texture on the material
myNewMaterial.SetTexture("_MainTex", myTexture);
//Apply to GameObject
trans.GetComponent<MeshRenderer>().material = myNewMaterial;
}https://stackoverflow.com/questions/39930186
复制相似问题