“ReplaceOutput 无法正常移除旧的输出设备”。在调用 AK::SoundEngine::ReplaceOutput()
时,若无法找到并移除与所提供 AkOutputDeviceID
匹配的设备(尽管最初调用成功),则将出现此问题。该问题的可能原因是,在将 AkOutputDeviceID
传给 AK::SoundEngine::ReplaceOutput()
以便移除设备时,同时针对该设备 ID 调用了 AK::SoundEngine::RemoveOutput()
。这会导致新的输出丢失所有之前设置的听者,并且可能无法使用新的 Audio Device ShareSet 来更新主总线。
推荐的解决步骤:
使用 Debug 版本库,将调试程序连接至游戏,然后重现相同场景。
避免使用同一 AkOutputDeviceID
调用 AK::SoundEngine::RemoveOutput()
和 AK::SoundEngine::ReplaceOutput()
。AK::SoundEngine::ReplaceOutput()
会从内部移除设备,因此没必要同时调用两个函数。
若有意同时调用两个函数,请更改 AK::SoundEngine::RemoveOutput()
或 AK::SoundEngine::ReplaceOutput()
使用的 AkOutputDeviceID
,以免使用同一 AkOutputDeviceID
调用两个函数。比如,在可能的情况下,有时要设置单独的 Audio Device ShareSet,但并不希望两个或多个输出使用同一设备。