真受不了creator,每次都要改改api才能显得你们牛逼?好好的音效api又改了,
以前的pause后有个resume的方法恢复音效播放,那么我想问现在呢,audiosource找不到这个resume,难道直接调用play吗???
import { _decorator, Component, Node, AudioSource, clamp01, AudioClip } from 'cc';
import { ComponentBase } from './ComponentBase';
const { ccclass, property } = _decorator;
@ccclass('AudioManager')
export class AudioManager extends ComponentBase {
public static instance: AudioManager = new AudioManager()
private musicAudioSource: AudioSource
private soundAudioAource: AudioSource;
onLoad() {
this.musicAudioSource = this.node.getChildByName("music").getComponent(AudioSource)
this.soundAudioAource = this.node.getChildByName("sound").getComponent(AudioSource)
}
/**
* 播放音乐
* @param {Boolean} loop 是否循环播放
*/
public playMusic(audioClip: AudioClip, loop: boolean) {
this.musicAudioSource.clip = audioClip;
this.musicAudioSource.loop = loop;
if (!this.musicAudioSource.playing) {
this.musicAudioSource.play();
}
}
public stopMusic() {
this.musicAudioSource.stop()
}
public pauseMusic() {
this.musicAudioSource.pause()
}
/**
* 播放音效
* @param {String} name 音效名称
* @param {Number} volumeScale 播放音量倍数
*/
public playSound(audioClip: AudioClip, volumeScale: number = 1) {
// 注意:第二个参数 “volumeScale” 是指播放音量的倍数,最终播放的音量为 “audioSource.volume * volumeScale”
this.soundAudioAource.playOneShot(audioClip, volumeScale);
}
// 设置音乐音量
public setMusicVolume(flag: number) {
flag = clamp01(flag);
this.musicAudioSource.volume = flag;
}
public setSoundVolume(flag: number) {
flag = clamp01(flag);
this.soundAudioAource.volume = flag;
}
}
顺便贴贴封装的新音效管理类,
之前的audioengine挺好用的,硬生生被你们弄没了,过分
改了api能提升效率
抱歉 ,audioSource.resume 是 2.x 的接口设计,3.x 这里确实是有 breaking change 的,这个不是 3.6.0 引入的
已经将 resume 合并到 play 操作里了,可以直接调用 play
那被暂停后如果想重新播放。。。这代码写的不就很尴尬了吗
遇到这个问题了,我现在强行写成先stop/play,resume就pause/play