Unity3D中模型变换颜色的问题!!急~~~~~~~!!!

我有一个汽车模型包含很多子元素,我想选取其中的一些元素通过按钮变换颜色,编写了如下代码:functionOnGUI(){GUI.skin=BtnGUIskins;if(G... 我有一个汽车模型包含很多子元素,我想选取其中的一些元素通过按钮变换颜色,编写了如下代码:
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;}

}

把代码赋给想变换颜色的一些元素,但是问题是:只有其中的一个元素可以变颜色,是啥问题啊?

效果如下:
怎么样能让整个汽车的外壳变成黑色呢?

跪求解决办法呀?!!
展开
 我来答
350716285
推荐于2017-11-25 · TA获得超过483个赞
知道小有建树答主
回答量:693
采纳率:0%
帮助的人:355万
展开全部
你的代码是为被给脚本的物体服务的,所以他只改变那个被给的脚本的物体的颜色
要想改变子物体,必须要遍历子物体,遍历部分可以如下写法
*****************************************************************************************************
//得到所有可渲染的子物体
Renderer[] rds = transform.GetComponentsInChildren<Renderer>();
//逐一遍历他的子物体
foreach (Renderer r in rds)
{
//逐一遍历子物体的子材质
foreach (Material m in r.materials)
{
m.color = Color.black;
}
}
追问
但是我把这段脚本附给了很多子物体,想让它们都改变颜色 为什么不可以?
追答
只要把脚本给根物体就可以了,运行时你选那个材质球看看到底变没变,有可能是反射的颜色干扰了
燕居桂林
2012-05-08
知道答主
回答量:22
采纳率:0%
帮助的人:12.7万
展开全部
如果是unity自建的object,应该没问题,但如果是导入的,可能会出现改不了的情况,其颜色也可能是由材质贴图控制的~这种情况下应该改贴图颜色才能改变颜色吧?~~
如果真是材质贴图倒方便了~~你可以通过PS多设置几张贴图,直接更改贴图就可以实现改变颜色了~~我用过这种方便 ~~嘻嘻~
我对unity不是很精通~~希望这个回答能给你帮上点小忙,而不是添乱~~嘻嘻~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tangmuyud
2013-12-17
知道答主
回答量:3
采纳率:0%
帮助的人:3347
展开全部
只要把你想要换色的部分都通用一个材质球(比如已经实现换色的那个材质球)就可以了,我刚好也在做一个汽车,已经实现车体换色了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iphonestudy
2012-05-08 · 超过24用户采纳过TA的回答
知道答主
回答量:117
采纳率:0%
帮助的人:71.4万
展开全部
脚本赋给根对象就行了,不必遍历子对象
更多追问追答
追问
真不行。。我试了
追答
建议你重新创建个project试下,有时unity工具会出现这种情况的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式