游戏秒级启动场景中闪屏播放与游戏音频恢复不同步,应该如何解决?
在游戏秒级启动场景中,进入前台后,系统会立即恢复引擎(resume),游戏内部音频也会被同时恢复,若此时ArkTS层仍在播放闪屏动画,则导致“画面仍在闪屏,声音提前播放”的不同步问题。
为解决上述问题,我们提供两种可选方案:
-
方案一:基于闪屏播放完成标识控制引擎恢复
在游戏启动初期设置splashScreenFinishFlag=false,表示闪屏未结束,引擎不应恢复。
// TuanjiePlayerAbility.etsonCreate(): void {globalThis.splashScreenFinishFlag = false;}private onResume(): void {if (globalThis.splashScreenFinishFlag) {unity.nativeOnResume();}}闪屏动画播放完毕后:
- 将splashScreenFinishFlag设置为true。
- 主动调用引擎的resume()方法。
// Splash.etsprivate splashScreenFinish() {globalThis.splashScreenFinishFlag = true;unity.nativeOnResume();} -
方案二:引擎侧支持音频静音/取消静音能力
在进入秒级启动恢复流程时,开发者在ArkTS层主动调用引擎静音接口,阻断闪屏阶段所有游戏内的音频输出。
闪屏播放结束后,开发者再调用取消静音接口恢复引擎音频。