我正在尝试动态加载对象,并根据从某人计算机上文件中获取的每个子对象的状态为每个子对象着色。
可以很好地加载对象,并且已经设置了材质,但是在游戏运行时,这种着色在场景中不起作用。我这样做是这样的:
grandchild.GetComponent<Renderer>().material.EnableKeyword("_NORMALMAP");
grandchild.GetComponent<Renderer>().material.SetColor("_Color", Color.yellow);
查看场景时,此颜色不可见(对象颜色与其原始颜色相同。 然后,我决定尝试将材料本身更改为这样的彩色:
grandchild.GetComponent<Renderer>().material = (Material)Resources.Load("YellowMaterial", typeof(Material);
这也不起作用,正在设置材质(进入场景编辑器并查看对象属性显示了正确的材质),但是对象没有改变颜色,而是保留了默认设置。但是,在素材资源文件夹中获取材质,然后将其手动拖动到场景编辑器中的可以。我不确定自己在这里做错了什么,因此任何帮助将不胜感激!
编辑:这是我在说些什么的图片
检查器中的对象(更换材料后):
场景中的对象
答案 0 :(得分:0)
GarrotJohnson和derHugo让我知道了问题所在。事实证明,我使用的每个对象都有一个子对象(由于某种原因称为“默认”),该子对象具有自己的Mesh Renderer和默认材质。获取此子对象(GameObject.transform.GetChild(0))并更改该材质即可。