本系列是根据老师的教程做的, 中间遇到些小问题, 于是把自己做的过程记录下来, 便于下次查看, 如有错误, 欢迎批评指正, 附上老师的原地址: 开发游戏的老王
导入音频
音频在之前已经导入了,要检查一下LOOP(循环播放)是否开启,如果是开启要先关闭一下,然后重新导入,用到的音频都处理下
新建AudioManager场景
- 新建场景,再新建节点,节点类型为Node,惯例,改名:AudioManager
配置音频资源
添加一个位置无关版本的音频流播放器节点
AudioStreamPlayer:位置无关的音频流播放器(2D/3D通用)
AudioStreamPlayer2D位置相关的音频流播放器2D
AudioStreamPlayer3D位置相关的音频流播放器3D
以此类推,把所有的音频全部添加上,记得重命名
添加脚本
脚本功能:调用者调用函数的时候给定要播放的音频名称,AudioManager节点就会为其播放
extends Node
func play(name : String):
var sfx = find_node(name)
if sfx is AudioStreamPlayer:
sfx.play()
保存一下,放到一个新文件夹Manager下
使用自动加载实现单例场景
单例简介
单例模式要解决两个问题:
- 某个类(Class)在整个系统中有且只有一个实例。
- 这个实例可以在整个系统被访问。
一般用于资源管理类,核心数据类等
详情见:https://orzgame.blog.csdn.net/article/details/105040614
GDScript依靠自动加载实现单例模式,步骤如下:
打开 项目>项目设置>自动加载
调用"AudioManager"
- 添加得分音效,打开ScoreArea.gd,添加这一行
AudioManager.play("sfx_point")#音效
- 添加死亡和按钮按下音效
AudioManager.play("sfx_swooshing")#按键音效
AudioManager.play("sfx_hit")#死亡音效
- 运行一下