デフォルトで、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つずつとします。
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プラットフォームのデフォルトプラットフォーム名が使われます。 |
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); } }
UNITY_PROJECT_ROOT/Assets/StreamingAssets/Audio/GeneratedSoundBanksにコピーします。
1.6.3