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;}
}
把代码赋给想变换颜色的一些元素,但是问题是:只有其中的一个元素可以变颜色,是啥问题啊?
效果如下:
怎么样能让整个汽车的外壳变成黑色呢?
跪求解决办法呀?!! 展开
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;}
}
把代码赋给想变换颜色的一些元素,但是问题是:只有其中的一个元素可以变颜色,是啥问题啊?
效果如下:
怎么样能让整个汽车的外壳变成黑色呢?
跪求解决办法呀?!! 展开
4个回答
展开全部
你的代码是为被给脚本的物体服务的,所以他只改变那个被给的脚本的物体的颜色
要想改变子物体,必须要遍历子物体,遍历部分可以如下写法
*****************************************************************************************************
//得到所有可渲染的子物体
Renderer[] rds = transform.GetComponentsInChildren<Renderer>();
//逐一遍历他的子物体
foreach (Renderer r in rds)
{
//逐一遍历子物体的子材质
foreach (Material m in r.materials)
{
m.color = Color.black;
}
}
要想改变子物体,必须要遍历子物体,遍历部分可以如下写法
*****************************************************************************************************
//得到所有可渲染的子物体
Renderer[] rds = transform.GetComponentsInChildren<Renderer>();
//逐一遍历他的子物体
foreach (Renderer r in rds)
{
//逐一遍历子物体的子材质
foreach (Material m in r.materials)
{
m.color = Color.black;
}
}
追问
但是我把这段脚本附给了很多子物体,想让它们都改变颜色 为什么不可以?
追答
只要把脚本给根物体就可以了,运行时你选那个材质球看看到底变没变,有可能是反射的颜色干扰了
展开全部
如果是unity自建的object,应该没问题,但如果是导入的,可能会出现改不了的情况,其颜色也可能是由材质贴图控制的~这种情况下应该改贴图颜色才能改变颜色吧?~~
如果真是材质贴图倒方便了~~你可以通过PS多设置几张贴图,直接更改贴图就可以实现改变颜色了~~我用过这种方便 ~~嘻嘻~
我对unity不是很精通~~希望这个回答能给你帮上点小忙,而不是添乱~~嘻嘻~~~
如果真是材质贴图倒方便了~~你可以通过PS多设置几张贴图,直接更改贴图就可以实现改变颜色了~~我用过这种方便 ~~嘻嘻~
我对unity不是很精通~~希望这个回答能给你帮上点小忙,而不是添乱~~嘻嘻~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要把你想要换色的部分都通用一个材质球(比如已经实现换色的那个材质球)就可以了,我刚好也在做一个汽车,已经实现车体换色了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
脚本赋给根对象就行了,不必遍历子对象
更多追问追答
追问
真不行。。我试了
追答
建议你重新创建个project试下,有时unity工具会出现这种情况的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询