我有一个汽车模型包含很多子元素,我想选取其中的一些元素通过按钮变换颜色,编写了如下代码:function OnGUI (){GUI.skin=BtnGUIskins;if(GUI.Button(Rect(810,250,100,30),"","BtnBlack")){renderer.material.color=Color.black;}if(GUI.Button(Rect(810,200,100,30),"","BtnBlue")){renderer.material.color=Color.blue;}if(GUI.Button(Rect(810,150,100,30),"","BtnRed")){renderer.material.color=Color.red;}if(GUI.Button(Rect(810,100,100,30),"","BtnWhite")){renderer.material.color=Color.white;}}把代码赋给想变换颜色的一些元素,但是问题是:只有其中的一个元素可以变颜色,是啥问题啊?效果如下:怎么样能让整个汽车的外壳变成黑色呢?跪求解决办法呀?!!
你的代码是为被给脚本的物体服务的,所以他只改变那个被给的脚本的物体的颜色要想改变子物体,必须要遍历子物体,遍历部分可以如下写法*****************************************************************************************************//得到所有可渲染的子物体Renderer[] rds = transform.GetComponentsInChildren<Renderer>();//逐一遍历他的子物体 foreach (Renderer r in rds) { //逐一遍历子物体的子材质 foreach (Material m in r.materials) { m.color = Color.black; }} 追问 但是我把这段脚本附给了很多子物体,想让它们都改变颜色 为什么不可以? 追答 只要把脚本给根物体就可以了,运行时你选那个材质球看看到底变没变,有可能是反射的颜色干扰了
如果是unity自建的object,应该没问题,但如果是导入的,可能会出现改不了的情况,其颜色也可能是由材质贴图控制的~这种情况下应该改贴图颜色才能改变颜色吧?~~如果真是材质贴图倒方便了~~你可以通过PS多设置几张贴图,直接更改贴图就可以实现改变颜色了~~我用过这种方便 ~~嘻嘻~我对unity不是很精通~~希望这个回答能给你帮上点小忙,而不是添乱~~嘻嘻~~~
脚本赋给根对象就行了,不必遍历子对象 追问 真不行。。我试了 追答 建议你重新创建个project试下,有时unity工具会出现这种情况的 追问 我试过了重建project,子物体材质球颜色无变化啊...