前言

毕设中使用Godot框架时遇到了一些问题,本文只对部分问题和解决方法做简要说明,而不对解决过程进行详细描述。

音频

因为版权问题,Godot不能导入mp3格式的音频,可以将音频考虑转换为ogg格式后导入。

播放

AudioStreamPlayer适合用来播放BGM,AudioStreamPlayer2DAudioStreamPlayer3D播放时声源带有位置信息,会出现左右声道不一致的问题。

音量控制

每个AudioStreamPlayer可以将音频绑定到某一个Audio Bus中,可以控制Bus的音量。

  AudioServer.set_bus_mute(AudioServer.get_bus_index("Master"), mute)可以使MasterBus静音。

循环

导入音频文件时,设置导入的loop属性为truefalse来控制循环与否。

注:loopimport的属性而不是AudioStreamPlayer的属性(可以观察到loop出现在import文件中),通过代码设置loop属性的方法为:$ActionPlayer.stream.set("loop", false)

捕捉事件

通过实现_input方法来对事件进行捕捉,如下代码可以在不提供pressed事件的节点中检测点击事件,is_visible_in_tree函数用来判断节点是否可见,单纯判断visible会判断失败(例如父节点不可见时子节点的visible属性仍为true

1
2
3
4
5
6
7
8
9
10
11
func _input(event):

if !is_visible_in_tree() :

return

if (event is InputEventMouseButton or event is InputEventScreenTouch) and event.pressed:

if get_rect().has_point(to_local(event.position)):

emit_signal("pressed")

位置

centered属性会导致节点坐标原点为中心而不是左上角。

透明度

透明度在modulate中进行调节