import { _decorator, AudioClip, AudioSource, Component, Node, resources } from 'cc'; const { ccclass, property } = _decorator; @ccclass('AudioManager') export class AudioManager extends Component { private static _instance: AudioManager; private static _audioSource?: AudioSource; static get instance() { if (this._instance) { return this._instance; } this._instance = new AudioManager(); return this._instance; } protected onLoad(): void { this.init(); } /**管理器初始化*/ init() { AudioManager._audioSource = this.node.getComponent(AudioSource); } /** * 播放音乐 * @param {Boolean} loop 是否循环播放 */ playMusic(loop: boolean = true) { const audioSource = AudioManager._audioSource!; audioSource.loop = loop; if (!audioSource.playing) { audioSource.play(); } } /** * 播放音效 * @param {String} name 音效名称 * @param {Number} volumeScale 播放音量倍数 */ playSound(name: string, volumeScale: number = 1) { const audioSource = AudioManager._audioSource!; resources.load(name, AudioClip, (err: any, ac) => { audioSource.playOneShot(ac, volumeScale); }); } }