diff --git a/packages/webgal/src/Core/controller/gamePlay/autoPlay.ts b/packages/webgal/src/Core/controller/gamePlay/autoPlay.ts index 575ae7d41..9f2052fc3 100644 --- a/packages/webgal/src/Core/controller/gamePlay/autoPlay.ts +++ b/packages/webgal/src/Core/controller/gamePlay/autoPlay.ts @@ -59,6 +59,10 @@ const autoPlay = () => { const data = webgalStore.getState().userData.optionData.autoSpeed; // 范围为 [250, 1750] const autoPlayDelay = 250 + (100 - data) * 15; + // Backlog 打开时不推进,避免在历史界面里自动播放导致剧情继续 + if (webgalStore.getState().GUI.showBacklog) { + return; + } let isBlockingAuto = false; WebGAL.gameplay.performController.performList.forEach((e) => { if (e.blockingAuto()) diff --git a/packages/webgal/src/UI/Backlog/Backlog.tsx b/packages/webgal/src/UI/Backlog/Backlog.tsx index 878f79f20..30234d533 100644 --- a/packages/webgal/src/UI/Backlog/Backlog.tsx +++ b/packages/webgal/src/UI/Backlog/Backlog.tsx @@ -127,6 +127,21 @@ export const Backlog = () => {
{ playSeClick(); + // 暂停所有 backlog 语音(包括当前;后续会重置并播放当前) + document + .querySelectorAll('[id^="backlog_audio_play_element_"]') + .forEach((audio: any) => { + audio.pause(); + audio.currentTime = 0; + }); + // 暂停游戏内正在播放的语音,避免与 backlog 语音混合 + const currentVocal = document.getElementById('currentVocal') as HTMLAudioElement | null; + if (currentVocal) { + currentVocal.pause(); + currentVocal.currentTime = 0; + } + // 卸载 vocal-play perform,避免其 blockingAuto 阻塞自动播放 + WebGAL.gameplay.performController.unmountPerform('vocal-play', true); // 获取到播放 backlog 语音的元素 const backlog_audio_element: any = document.getElementById( 'backlog_audio_play_element_' + indexOfBacklog,