(原) Godot 免费跨平台游戏引擎(九、GUI外观)

原创文章,请后转载,并注明出处。

Godot 免费跨平台游戏引擎 (一、初见)

Godot 免费跨平台游戏引擎(二、第一个游戏)

Godot 免费跨平台游戏引擎(三、理论是实践的基础)

Godot 免费跨平台游戏引擎 (四、脚本GDScript)

Godot 免费跨平台游戏引擎(五、常用英文)

Godot 免费跨平台游戏引擎(六、一些收集)

Godot 免费跨平台游戏引擎(七、2D)

Godot 免费跨平台游戏引擎(八、网络)

Godot 免费跨平台游戏引擎(九、GUI外观)

Godot 免费跨平台游戏引擎(十、相关资源)

Godot 免费跨平台游戏引擎(十一、源码编译)

Godot 免费跨平台游戏引擎(十二、软件GUI)

Godot简单制作残影效果

Godot ParallaxBackground 视差背景

Godot 使用Light2D实现遮罩效果

码农家的孩子:学字母(Godot改版中)


既然想用Godot来做软件界面,那么现在这个黑漆漆的样式是不符合需求的。研究一下外观。

var t = Theme.new()
t.set_color("font_color", "Label", Color(1.0, 1.0, 1.0))

#设置一个默认的字体及大小
var font = DynamicFont.new()
font.font_data = preload("res://yahei.ttf")
font.size = 32
t.set_default_font(font)

var l = Label.new()
l.set_theme(t)

#当然你可以直接指定将外观指定给结点
$Label.set_theme(t)

#还有一些其它样式
t.set_color("font_color_hover","Button",Color(1.0, 1.0, 1.0))

这个示例创建了一个新主题。改变“字体颜色”选项,然后应用于标签。因此,该标签及所有子标签都将使用这个颜色。

var l = Label.new()
l.add_color_override("font_color", Color(1.0, 1.0, 1.0))

set(“custom_colors/font_color”, Color(1,0,0)) 这个是设置某个节点的字体颜色,而本章的方法,一来可以复用,再者可以在通过编辑来适配一类节点。

通过add_color_override与上相同。

我将代码举一反个三

func _ready():
    # 添加了一个外观,外观中即定义了Label节点,也定义了Button节点的颜色
	var t = Theme.new()
	t.set_color("font_color", "Label", Color(0.5, 0.6, 1.0))
	t.set_color("font_color_hover","Button",Color(0.1,0.6,0.6))

    # 将外观指定给某个结点。若要批量指定,也可以通过子节点遍历
	$Label2.set_theme(t)
	$Button.set_theme(t)

    # 定义了一个样式,并将Button节点的focus指定为此样式
	var s = StyleBoxFlat.new()
	s.set_bg_color(Color(1.0,0.5,0.1,1))	
	$Button.set("custom_styles/focus",s)

    # 定义了一个动态字体,并将字体载入,指定此动态字体给Button节点
	var f = DynamicFont.new()
	f.font_data = load("res://res/yahei.ttf")
	$Button.set("custom_fonts/font",f)

这样一来,我们可以基本不用通过IDE来指定设置,而通过代码可以更加灵活。例如将外观保存在一个文本配置文件中,进而可以很简单高效的修改界面样式。

自定义控件

如果只需要外观定制少数几个控件,通常没有必要创建一个新主题。控件提供其主题选项作为特殊类型的属性。

创建主题

创建主题的最简单方法是编辑主题资源。从资源菜单可以创建主题。

将主题保存下来,即可在其它项目中重复使用。

我们可以在代码中加载这个保存下来的主题文件

	get_node(".").set_theme(Global.theme)
	#get_node(".").set_theme(load("res://my.tres"))

相关文章