menu
 

在 Audiokinetic 社区问答论坛上,用户可对 Wwise 和 Strata 相关问题进行提问和解答。如需从 Audiokinetic 技术支持团队获取答复,请务必使用技术支持申请单页面。

0 投票
Hey there,

I'm running unity 2018.1.9f1, Oculus Utilities 1.27, WWise Unity Integration 2018.1.1.6727.1172, and WWise 2018.1.1. I'm struggling to change the WWise audio output from the default windows device to the Oculus chosen device. 
#if !OVRPLUGIN_UNSUPPORTED_PLATFORM
            string audioDevice = OVRManager.audioOutId;

            uint audioOutId = AkSoundEngine.GetDeviceIDFromName(audioDevice);

            ActivePlatformSettings.AkInitializationSettings.initSettings.settingsMainOutput.idDevice = audioOutId;
#endif

I've tried adding something along the lines of the above in the AkWwiseInitializationSettings.cs's InitializeSoundEngine function, before AkSoundEngine.Init gets called. However, it doesn't seem to work. 

Any tips? 

分类:General Discussion | 用户: Mike S. (260 分)

1个回答

0 投票
 
已采纳
I ended up having to do something like this in the AkWwiseInitializationSettings.cs's InitializeSoundEngine function:
#if !OVRPLUGIN_UNSUPPORTED_PLATFORM
	    AkWindowsSettings akWindowsSettings = (AkWindowsSettings)(ActivePlatformSettings);
	    if (akWindowsSettings)
	    {
	        string audioDevice = OVRManager.audioOutId;
	        uint audioOutId = AkSoundEngine.GetDeviceIDFromName(audioDevice);
	        akWindowsSettings.UserSettings.m_MainOutputSettings.m_DeviceID = audioOutId;
        }
#endif
Additionally, I had to make sure OVRManager ran before AKInitialize in my script execution order.
And I noticed that AkSoundEngine.IsInitialized() was returning True, even if the sound engine wasn't initialized. So I had to do
if (AkSoundEngine.IsInitialized())
{
    AkSoundEngine.Term();
}
at the start of AkSoundEngineController.cs's Init method. 
用户: Mike S. (260 分)
采纳于 用户:Mike S.
Sorry to necropost here but I was struggling with this same problem and although the above code pointed me in the right direction I found that it didn't work for me. (Wwise Integration 2018.1.11.6987.1466)

In the end I found that it worked to create an OculusWwiseInitialize Component like this:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OculusWwiseInitialize : MonoBehaviour
{
    void Awake()
    {
        if (AkBasePathGetter.GetPlatformName() == "Windows")
        {
            AkWindowsSettings akWindowsSettings = (AkWindowsSettings)AkWwiseInitializationSettings.ActivePlatformSettings;
            if (akWindowsSettings)
            {
                string audioDevice = OVRManager.audioOutId;
                uint audioOutId = AkSoundEngine.GetDeviceIDFromName(audioDevice);
                akWindowsSettings.UserSettings.m_MainOutputSettings.m_DeviceID = audioOutId;
            }
        }
    }
}

Under Project Settings -> Script Execution Order I've then tweaked the order to be like:

OculusWwiseInitialize
OVRManager
AkInitializer
...