遇到了个坑爹的问题,我在想在游戏里写个功能,大概就是玩家进入一个区域内,整体改变场景的透明度,离开某个区域恢复到最初的透明度。
实际上方法很简单的,只是在搜索教程的时候,大家都教的是
gameObject.GetComponent.().material.color.a = 0.5;
这样只能改一个物体的颜色,不能改变所有的。
实际上有个非常简单的办法。(这里用JS语句来写,实际上改成C#也是差不多的)
var mat : Material; //设置一个Material
function Start()
{mat.color.a = 0.0;} //改成全透明
这样,就可以把整个场景所用的材质球全部改成透明度为0(即隐藏)
唯一的缺点是,这里的改动会在项目运行时保存,所以尽量少改动,除非有我这种游戏设计所需的脑洞不得不做才改之。
2018-3-21补充 如何更改sprite的颜色
XXX.GetComponent().color = new Color(0.5f, 0.5f, 0.5f, 0.5f); 4个参数代表的是RGBA,范围是0-1