官网的代码 要先封装什么的 没太明白
CCC 2.0版本简单多了 一行代码 然后拖拽
3.x 目前需要通过 AudioSource 组件来播放音频
背景音乐我直接添加播放, 但是 死亡的音效 我需要节点销毁再播放。这???
可以通过一个常驻节点来专门播放死亡音效
预格式化文本将缩进 4 格`import { _decorator, Component, AudioClip, AudioSource } from 'cc';
const { ccclass, property } = _decorator;
// clipdict数据接口
interface IAudioClip {
[name: string]: AudioClip;
}
@ccclass(‘CommonAudioManger’)
export class CommonAudioManger extends Component {
@property([AudioClip])
public audioClips: AudioClip[] = [];
private _clipDict: IAudioClip = {};
private _audioSource: AudioSource = null!;
start () {
// 将音频资源存起来
for(let i=0; i<this.audioClips.length; i++){
let element = this.audioClips[i];
this._clipDict[element.name] = element;
}
this._audioSource = this.getComponent(AudioSource);
}
/**
* @def 音效.只播放一次
* @param name 音频名,不用加后缀
*/
public play(name: string){
const clip = this._clipDict[name];
if(clip !== undefined){
this._audioSource.playOneShot(clip);
}
}` 在你的常驻跟节点 挂上这个脚本即可, 哪里需要播放声音 调用接口就行了
后续有计划加入纯代码控制的实现吗? 或者说是cc.audioEngine替代品。
我想不通为什么要移除cc.audioEngine, 能稍微给个解释吗。
感谢大佬 ,我后面试下这个方案。
我现在是 一个音频控制器代码 然后另外一个脚本导入, 然后 把属性组件放上音频
import { _decorator, Component, Node, AudioSource,resources, AudioClip} from ‘cc’;
export class audioManagement{
private constructor(){
}
static instance :audioManagement = null;
static getInstance(){
if(this.instance){
return this.instance;
}else{
let audio = new audioManagement();
this.instance = audio;
}
}
audioSoureCom:AudioSource = new AudioSource();
//播放音效
playSoundEffect(url){
this.loadAudio(url).then((clip)=>{
console.log('加载成功');
this.audioSoureCom.clip = clip;
this.audioSoureCom.playOneShot(clip,1);
})
}
//加载音乐文件
loadAudio(url){
let promise = new Promise<AudioClip>((resolve,reject)=>{
resources.load(url,(err,clip:AudioClip)=>{
if(err){
reject(err);
return;
}
resolve(clip);
})
});
return promise;
}
}
还是老话,前人栽树后人乘凉,感谢大佬们支持