バージョン

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

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

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

カスタムプラットフォームの定義

デフォルトのプラットフォーム解消スクリプトの入っているファイルの場所は <UNITY_PROJECT_ROOT>/Assets/Wwise/API/Runtime/Handwritten/Common/AkBasePathGetter.csです。GetPlatformName() メソッドに見られるように、全てのプラットフォームのデフォルト名がこのファンクションで返却されます。自分のプラットフォーム名を使いたければ、 GetCustomPlatformName デリゲートに、メソッドを登録する必要があります。デリゲートに登録するには、 RuntimeInitializeOnLoadMethod アトリビュートを通してコールする静的メソッドを使うことを推奨します。

この例では、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で、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) 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);
    }
    }
  4. または、Wwiseで"iPhone"、"iPod"、"iPad"の3つのプラットフォーム全てのSoundBankを生成して、その結果できた3つのフォルダを、UNITY_PROJECT_ROOT/Assets/StreamingAssets/Audio/GeneratedSoundBanksにコピーします。
  5. Unityで、ゲームをiOSプラットフォーム用にビルドする。
  6. これ以降はデバイスの種類に応じて異なるSoundBankセットが採用されることになる。

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう