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

团结引擎1.2.2
fmod最新package

你好,

感谢你分享的的信息,我们已经在即将发布的版本中修复了这个问题,发布时我会通知你。

好的 能问下什么时间会发布新版本吗

目前还没办法提供明确的发布日期,因为我们还在进行最后一轮QA,但应该不会太久。

[quote=“li_fmod, post:4, topic:22108”]
办法提供明确的发布日期,因为我们还在进行最后一轮QA
[/quote]谢谢回复

1 Like

发现已经挂了 2.03.03版本 是不是在这个版本做的声音打断修复? 另外这个版本有处理 声音延迟的问题吗?

是的,我们昨天发布了新的更新,目前最新的 2.02.24 以及 2.03.03 版本都已经修复了声音打断的问题。请注意相对更稳定的 2.02.24 版本目前还需要点击 All 按钮才能显示出来:

不知声音延迟具体指的是哪方面呢?是所有声音播放出来的时候都有很明显的延迟么?目前来说对声音延迟的解决方案还是只有我们之前在这个帖子里聊到的解决方法:OpenHarmony平台 团结引擎 mixerSuspend/mixerResume 调用无效 - #7 by li_fmod

2.03.03 我已经验证了 闹钟打断的 问题修复了, 之前声音延迟的解决方式我沿用了 昨天也尝试去掉之前贴子里提到过的设置 还是会有问题

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

经过测试后我发现,在团结引擎里为了确保音频驱动能够正确切换为快速模式(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