游戏中,当某个按钮不可用时,常常要将其颜色置为灰色以告知用户。一种方法是给这个按钮增加一个灰色图片,需要置灰的时候替换上,但是如果需要置灰的按钮很多,为每个按钮都要单独做一个灰色图就太麻烦了,因此我们常常用Shader来解决这个问题.在Godot中这个方法也同样适用于
Sprite
。
最终效果

代码如下
shader_type canvas_item;
uniform bool enabled = true;
void fragment(){
vec4 color = texture(TEXTURE,UV);
if(!enabled){
float gray = (color.r + color.g + color.b)*0.33;
color.rgb = vec3(gray);
}
COLOR = color;
}
这样在GDScript中用如下代码就可将这个按钮置灰
button.material.set_shader_param("enabled", false)
网友评论