版本: 3.3.2
重现代码:
// 随便挂个按钮, TOUCH_START 绑上这个方法
$testBtn_ts() {
const asc: AudioSource = window["asc"] || (window["asc"] = this.node.addComponent(AudioSource));
asc.loop = asc.playOnAwake = false;
console.log("[testBtn_ts]");
asc.clip = this.clip; // 随便挂一个clip, 这里是个大概2秒的音效
asc.play();
}
// 随便挂个按钮, TOUCH_END 绑上这个方法
$testBtn_te() {
const asc: AudioSource = window["asc"] || (window["asc"] = this.node.addComponent(AudioSource));
asc.loop = asc.playOnAwake = false;
console.log("[testBtn_te]");
asc.stop();
asc.clip = null;
}
期望结果: 按下按钮播放音效, 抬起按钮停止
运行结果: 无论长按短按, 音效只会播放第一次
我这调用也没有很过分吧…
扫了一眼源码…里面各种换源/异步回调…没头发看了…你们自个玩吧…
反正显然是有一堆回调卡住了…

对了还有个和上文无关的音频播放小问题…
第一个音效经常性的会延迟/丢失…
通常是进场景悄悄来个playOneShot(clip, 0.01)才好解决…




你要一开始说不能赋值两个相同的音效不就好了,我理解能力比较差。