鸿蒙系统下fmod声音被闹钟中断后没有恢复如何解决

感谢你分享的信息以及让我们注意到这个问题。

经过测试后我发现,在团结引擎里为了确保音频驱动能够正确切换为快速模式(Fast Mode),需要在 FMOD 序列化之前(即预初始化阶段)完成设置。

详细的设置方式可以看一下这个链接: Unity Integration | 11. Scripting Examples | Callback Handler

具体流程如下:

  1. 新建一个 CallbackHandler 脚本
using System;
using UnityEngine;

[CreateAssetMenu(menuName = "My FMOD Callback Handler")]
public class MyFMODCallbackHandler : FMODUnity.PlatformCallbackHandler
{
    public override void PreInitialize(FMOD.Studio.System studioSystem, Action<FMOD.RESULT, string> reportResult)
    {
        FMOD.RESULT result;

        FMOD.System coreSystem;
        result = studioSystem.getCoreSystem(out coreSystem);
        reportResult(result, "studioSystem.getCoreSystem");

        // Set up studioSystem and coreSystem as desired
        coreSystem.setDriver(1);  //设置快速模式
    }
}

  1. 右键点击新建一个 MyFMODCallbackHandler

  2. 在 FMOD Settings下的 OpenHarmony 平台设置里的 Callback Handler 一栏里,选中在上一步里新建的 MyFMODCallbackHandler

在这之后快速模式(Fast Mode)应该便可以在 FMOD 序列化之前设置成功,并且 Buffer Length 也可以设置成更合理的 512,使延迟大幅度减小。

希望这能帮到你,如果问题依然存在,还请告诉我。

1 Like