前言
毕设中使用Godot框架时遇到了一些问题,本文只对部分问题和解决方法做简要说明,而不对解决过程进行详细描述。
音频
因为版权问题,Godot不能导入mp3
格式的音频1,可以考虑将音频转换为ogg
格式后导入。
播放
AudioStreamPlayer
适合用来播放BGM,AudioStreamPlayer2D
、AudioStreamPlayer3D
播放时声源带有位置信息,会出现左右声道不一致的问题。
音量控制
每个AudioStreamPlayer
可以将音频绑定到某一个Audio Bus
中,然后直接控制Bus的音量。
例如,以下代码可以使名为Master
的Bus静音。
AudioServer.set_bus_mute(AudioServer.get_bus_index("Master"), mute)
循环
导入音频文件时,设置导入的loop
属性为true
或false
来控制循环与否。
注:loop
是import
的属性而不是AudioStreamPlayer
的属性(可以观察到loop
出现在import文件中),通过代码设置loop
属性的方法为: $ActionPlayer.stream.set("loop", false)
捕捉鼠标事件
通过重载_input
函数来对输入事件进行捕捉,如下代码实现了在不提供pressed
事件的节点中,检测鼠标点击,
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")
注:is_visible_in_tree
函数用来判断节点是否可见,单纯判断visible
的值是不可取的(例如,父节点不可见时子节点的visible
属性仍为true
)
另一种方法是,加入类型为Control
的子节点,利用子节点检测鼠标事件。
位置
centered
属性会导致节点坐标原点为中心而不是左上角。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。