UnityでWwiseのカスタムプラットフォームを使う
デフォルトで、Wwise Unity Integrationは対象Wwiseプロジェクトに設定された全てのプラットフォームにデフォルトの名前が付いているものとします。プラットフォームに別の名前を付ける場合や、ベースプラットフォーム用に複数のカスタムプラットフォームを設定する場合は、対応できるようにC#スクリプトを作成する必要があります。
![]() | 注記:このページでは、SoundBankが生成されるサブフォルダの名前がプラットフォームと同じものとしています。なお、そうでない場合は GetPlatformName メソッドで返される文字列が実際はゲーム中のSoundBankサブフォルダ名として使用されています。 |
カスタムプラットフォームの定義
デフォルトのプラットフォーム解消スクリプトの入っているファイルの場所は UNITY_PROJECT_ROOT/Assets/Wwise/Deployment/Components/AkBasePathGetter.cs
です。GetPlatformName()
メソッドに見られるように、全てのプラットフォームのデフォルト名がこのファンクションで返却されます。自分で設定したプラットフォーム名を使いたい場合は、このパーシャルクラスを拡張する必要があります。
例
この例では、iOSプラットフォームのユースケースだけを見ます。iOSのベースプラットフォーム用に3つの異なるカスタムプラットフォームを用意する場合を考えます: iPod用、iPhone用、iPad用にそれぞれ1つずつとします。
- まずWwiseプロジェクト内で、次の3つの異なるプラットフォームをPlatform Managerで追加する: "iPod", "iPhone", "iPad"。(WwiseのPlatform Managerについては、WwiseドキュメントのWwise Help > Setting Up Your Projects > Managing Platformsを参照。)
- 次にUnityで、
AkBasePathGetter
を拡張するC#スクリプトを作成します。このファイルの中身は、以下のようになります:public partial class AkBasePathGetter { #if UNTIY_IOS static partial void GetCustomPlatformName(ref string platformName) { 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プラットフォームのデフォルトプラットフォーム名が使われます。 - (a)
AkBuildPreprocessor
を拡張するC#を作成するか、(b)AkBuildPreprocessor
内でこの機能を使うC#スクリプトを作成します。ファイルの中身は、以下のようにすることができます: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); } }
- または、Wwiseで"iPhone"、"iPod"、"iPad"の3つのプラットフォーム全てのSoundBankを生成して、その結果できた3つのフォルダを、
UNITY_PROJECT_ROOT/Assets/StreamingAssets/Audio/GeneratedSoundBanks
にコピーします。 - Unityで、ゲームをiOSプラットフォーム用にビルドする。
- これ以降はデバイスの種類に応じて異なるSoundBankセットが採用されることになる。
Wwise Unity Integrationに対してThu Feb 1 09:40:26 2018に生成されました。
