UnityでWwiseのカスタムプラットフォームを使う

デフォルトで、Wwise Unity Integrationは対象Wwiseプロジェクトに設定された全てのプラットフォームにデフォルトの名前が付いているものとします。プラットフォームに別の名前を付ける場合や、ベースプラットフォーム用に複数のカスタムプラットフォームを設定する場合は、対応できるようにC#スクリプトを作成する必要があります。

Note.gif

Note: このページでは、SoundBankが生成されるサブフォルダの名前がプラットフォームと同じものとしています。なお、そうでない場合はGetPlatformNameメソッドで返される文字列が実際はゲーム中のSoundBankサブフォルダ名として使用されています。

Custom Platforms

デフォルトのプラットフォームresolveスクリプトはUNITY_PROJECT_ROOT/Assets/Wwise/Deployment/Components/AkBasePathGetter.csにあります。GetPlatformNameメソッドに見られるように、全てのプラットフォームのデフォルト名がこのファンクションで返却されます。自分で設定したプラットフォーム名を使いたい場合は、以下の手順に従います:

  1. 新しいC#スクリプトをUNITY_PROJECT_ROOT/Assets/Wwiseフォルダの外に作成して、名前をAkCustomPlatformNameGetter.csとする。
  2. スクリプト内で、公開AkCustomPlatformNameGetterクラスを作成する。
  3. AkCustomPlatformNameGetterクラス内で、GetPlatformNameという公開された静的ファンクションを追加して文字列 を返す。
  4. 正しいプラットフォーム名を返すコードを自分で書く。
  5. ゲームを対象プラットフォーム用にビルドする前に、特定のベースプラットフォームの全てのカスタムプラットフォームのSoundBankが、StreamingAssetsフォルダにコピーされていることを確認する。詳しくはpg_streamassetsを参照。

この例は、iOSプラットフォームのユースケースだけをカバーします。iOSのベースプラットフォーム用に3つの異なるカスタムプラットフォームを用意する場合を考えます:iPod用、iPhone用、iPad用にそれぞれ1つずつとします。

  1. まずWwiseプロジェクト内で、次の3つの異なるプラットフォームをPlatform Managerで追加する: "iPod", "iPhone", "iPad"。(WwiseのPlatform Managerについては、WwiseドキュメントのWwise Help > Setting Up Your Projects > Managing Platformsを参照。)
  2. 次にUnityで、UNITY_PROJECT_ROOT/Assets, and name it AkCustomPlatformNameGetter.csにC#スクリプトを作成する。このファイルのコンテンツ例を以下に示す:
    public class AkCustomPlatformNameGetter
    {
        static public string GetPlatformName()
        {
    #if UNTIY_IOS
            switch(UnityEngine.iOS.Device.generation)
            {
                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:
                    return "iPhone";
    
                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:
                    return "iPod";
    
                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:
                    return "iPad";
    
                default:
                    return "iPhone";
            }
    #endif
            return string.Empty;
        }
    }
    
    Note.gif
    Note: カスタムGetPlatformNameメソッドが空の文字列を返す場合は、現在アクティブなUnityプラットフォームのデフォルトプラットフォーム名が使われます。
  3. Wwiseで3つのプラットフォーム"iPhone", "iPod", "iPad"のそれぞれのSoundBankを生成する。作成された3つのフォルダを、UNITY_PROJECT_ROOT/Assets/StreamingAssets/Audio/GeneratedSoundBanks</ttにコピーする。
  4. Unityで、ゲームをiOSプラットフォーム用にビルドする。
  5. これ以降はデバイスの種類に応じて異なるSoundBankセットが採用されることになる。
Wwise Unity Integrationに対してMon Jan 9 13:37:47 2017に生成されました。  doxygen 1.6.3