版本

menu_open
Wwise Unity Integration Documentation
在 Unity 中使用 Wwise 自定义平台

默认情况下,Wwise Unity 集成假设关联的 Wwise 工程中的定义的平台用的都是默认名称。如果您希望给平台自定义的名称或为一个基本平台定义多个自定义平台,则将需要创建一个 C# 脚本来实现此目标。

备注:在此页面中,假设生成 SoundBank 的子文件夹与您的平台名称相同。如果名称不同,那么请注意,GetPlatformName 方法返回的字符串实际上被用作游戏中的 SoundBank 子文件夹名。

定义自定义平台

The default platform resolving script can be found in the file <UNITY_PROJECT_ROOT>/Assets/Wwise/API/Runtime/Handwritten/Common/AkBasePathGetter.cs. 在 GetPlatformName() 方法中可以看到,所有平台的默认名称都由这个函数返回。若想使用自己命名的平台名称,则须注册 GetCustomPlatformName 委托方法。建议使用通过 RuntimeInitializeOnLoadMethod 属性调用的静态方法来注册委托。

示例

这个示例只涵盖了 iOS 平台的一个用例。在这个例子中,您希望有三个不同的自定义平台:一个是 ipod,一个是 iphone,一个是 ipad。

  1. 首先,在 Wwise 工程中,您将在 Platform Manager(平台管理器)中添加三个不同的平台:"iPod"、"iPhone" 和 "iPad"。(关于 Wwise 的 Platform Manager 的更多信息,请参见 Wwise Help > 设置工程 > 管理多平台 一节)。
  2. 然后,在 Unity 中创建用来注册 GetCustomPlatformName 委托的 C# 脚本。该文件的内容应类似于:
    public partial class MyCustomBasePathGetter
    {
    [UnityEngine.RuntimeInitializeOnLoadMethod(UnityEngine.RuntimeInitializeLoadType.BeforeSceneLoad)]
    static void RegisterCustomPlatformName()
    {
    AkBasePathGetter.GetCustomPlatformName = GetCustomPlatformName;
    }
    static partial void GetCustomPlatformName(ref string platformName)
    {
    #if UNTIY_IOS
    switch(UnityEngine.iOS.Device.generation)
    {
    case UnityEngine.iOS.DeviceGeneration.iPodTouch1Gen:
    case UnityEngine.iOS.DeviceGeneration.iPodTouch2Gen:
    case UnityEngine.iOS.DeviceGeneration.iPodTouch3Gen:
    case UnityEngine.iOS.DeviceGeneration.iPodTouch4Gen:
    case UnityEngine.iOS.DeviceGeneration.iPodTouch5Gen:
    case UnityEngine.iOS.DeviceGeneration.iPodTouchUnknown:
    platformName = "iPod";
    break;
    case UnityEngine.iOS.DeviceGeneration.iPad1Gen:
    case UnityEngine.iOS.DeviceGeneration.iPad2Gen:
    case UnityEngine.iOS.DeviceGeneration.iPad3Gen:
    case UnityEngine.iOS.DeviceGeneration.iPadMini1Gen:
    case UnityEngine.iOS.DeviceGeneration.iPad4Gen:
    case UnityEngine.iOS.DeviceGeneration.iPadAir1:
    case UnityEngine.iOS.DeviceGeneration.iPadMini2Gen:
    case UnityEngine.iOS.DeviceGeneration.iPadMini3Gen:
    case UnityEngine.iOS.DeviceGeneration.iPadAir2:
    case UnityEngine.iOS.DeviceGeneration.iPadUnknown:
    platformName = "iPad";
    break;
    case UnityEngine.iOS.DeviceGeneration.iPhone:
    case UnityEngine.iOS.DeviceGeneration.iPhone3G:
    case UnityEngine.iOS.DeviceGeneration.iPhone3GS:
    case UnityEngine.iOS.DeviceGeneration.iPhone4:
    case UnityEngine.iOS.DeviceGeneration.iPhone4S:
    case UnityEngine.iOS.DeviceGeneration.iPhone5:
    case UnityEngine.iOS.DeviceGeneration.iPhone5C:
    case UnityEngine.iOS.DeviceGeneration.iPhone5S:
    case UnityEngine.iOS.DeviceGeneration.iPhone6:
    case UnityEngine.iOS.DeviceGeneration.iPhone6Plus:
    case UnityEngine.iOS.DeviceGeneration.iPhoneUnknown:
    default:
    platformName = "iPhone";
    break;
    }
    #endif
    }
    }
    备注:如果 platformName 未修改,则当前激活状态的 Unity 平台将使用默认平台名称。
  3. 或者,(a)创建一个 C::,它将扩展 AkBuildPreprocessor,或(b)创建一个 C::,它将使用 AkBuildPreprocessor 内的功能。该文件的内容可以类似于:
    public class WwiseIOSBuildPreprocessor : IPreprocessBuild, IPostprocessBuild
    {
    public int callbackOrder { get { return 0; } }
    string iPodDestinationSoundBankFolder = string.Empty;
    string iPadDestinationSoundBankFolder = string.Empty;
    string iPhoneDestinationSoundBankFolder = string.Empty;
    public void OnPreprocessBuild(BuildTarget target, string path)
    {
    if (target == BuildTarget.iOS)
    {
    AkBuildPreprocessor.CopySoundbanks(true, "iPod", iPodDestinationSoundBankFolder);
    AkBuildPreprocessor.CopySoundbanks(true, "iPad", iPadDestinationSoundBankFolder);
    AkBuildPreprocessor.CopySoundbanks(true, "iPhone", iPhoneDestinationSoundBankFolder);
    }
    }
    public void OnPostprocessBuild(BuildTarget target, string path)
    {
    DeleteSoundbanks(iPodDestinationSoundBankFolder);
    DeleteSoundbanks(iPadDestinationSoundBankFolder);
    DeleteSoundbanks(iPhoneDestinationSoundBankFolder);
    }
    }
  4. 或者在 Wwise 中,为全部三个平台 "iPhone"、"iPod" 和 "iPad" 生成 SoundBank,将生成的三个文件夹复制到 UNITY_PROJECT_ROOT/Assets/StreamingAssets/Audio/GeneratedSoundBanks 中。
  5. 在 Unity 中,为 iOS 平台构建您的游戏。
  6. 从现在开始,根据使用的设备类型,将使用不同的 SoundBank 集合。

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅