UnityでWwiseのカスタムプラットフォームを使う
デフォルトで、Wwise Unity Integrationは対象Wwiseプロジェクトに設定された全てのプラットフォームにデフォルトの名前が付いているものとします。プラットフォームに別の名前を付ける場合や、ベースプラットフォーム用に複数のカスタムプラットフォームを設定する場合は、対応できるようにC#スクリプトを作成する必要があります。
![]() | Note:このページでは、SoundBankが生成されるサブフォルダの名前がプラットフォームと同じものとしています。なお、そうでない場合は |
カスタムプラットフォームの定義
デフォルトのプラットフォーム解消スクリプトの入っているファイルの場所は UNITY_PROJECT_ROOT/Assets/Wwise/Deployment/Components/AkBasePathGetter.cs
です。GetPlatformNameメソッドに見られるように、全てのプラットフォームのデフォルト名がこのファンクションで返却されます。自分で設定したプラットフォーム名を使いたい場合は、このパーシャルクラスを拡張する必要があります。
PS4
この例では、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 }
Note: platformName
が変更されずそのままの場合は、起動中のUnityプラットフォームのデフォルトプラットフォーム名が使われます。 - Either, (a) create a C# that extends
AkBuildPreprocessor
or (b) create a C# script that uses the functionality withinAkBuildPreprocessor
. The contents of the file could be as follows: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); } }
- Or in Wwise, generate the SoundBanks for all three platforms "iPhone", "iPod", and "iPad", and copy the three resulting folders to
UNITY_PROJECT_ROOT/Assets/StreamingAssets/Audio/GeneratedSoundBanks
. - Unityで、ゲームをiOSプラットフォーム用にビルドする。
- これ以降はデバイスの種類に応じて異なるSoundBankセットが採用されることになる。
Wwise Unity Integrationに対してMon Jan 8 10:46:17 2018に生成されました。
