버전

menu_open
Wwise Unity Integration Documentation
Unity에서 Wwise 커스텀 플랫폼 사용하기

기본적으로 Wwise Unity 통합은 연결된 Wwise 프로젝트에서 정의한 플랫폼이 모두 기본 이름을 가졌다고 가정합니다. 플랫폼에 새로운 이름을 지정하거나 기반 플랫폼의 여러 가지 커스텀 플랫폼을 정의하려면 C# 스크립트가 필요합니다.

참고:이 페이지는 SoundBank가 생성되는 하위 폴더의 이름이 플랫폼의 이름과 같다고 가정합니다. 폴더의 이름이 다를 경우 GetPlatformName 메소드가 리턴하는 문자열을 게임의 SoundBank 하위 폴더의 이름으로 사용하게 됩니다.

플랫폼 정의하기

The default platform resolving script can be found in the file <UNITY_PROJECT_ROOT>/Assets/Wwise/API/Runtime/Handwritten/Common/AkBasePathGetter.cs. GetPlatformName() 메소드에서 볼 수 있듯이 모든 플랫폼의 기본 이름은 이 함수에 의해 리턴됩니다. 사용자가 지정한 플랫폼 이름을 사용하려면 GetCustomPlatformName 델리게이트에 메소드를 등록해야 합니다. 델리게이트를 등록하기 위해서 RuntimeInitializeOnLoadMethod 속성을 사용하여 고정적 메소드를 사용할 것을 권장합니다.

예시

이 예시는 iOS 플랫폼의 경우만 다룹니다. 예를 들어 iOS 기반 플랫폼인 아이팟, 아이폰, 아이패드용으로 세 가지 커스텀 플랫폼을 정의하려 한다고 가정합시다.

  1. 먼저 Wwise 프로젝트의 Platform Manager에서 'iPod', 'iPhone', 'iPad' 이 세 가지 플랫폼을 추가하세요. (Wwise의 Platform Manager에 대한 더 많은 정보는 Wwise 설명서에서 Wwise 도움말 > 프로젝트 시작하기 > 플랫폼 관리하기 섹션을 참고하세요.
  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' 이 세 가지 플랫폼의 SoundBank를 모두 생성한 후 폴더를 UNITY_PROJECT_ROOT/Assets/StreamingAssets/Audio/GeneratedSoundBanks로 복사하세요.
  5. Unity에서 iOS 플랫폼용으로 게임을 빌드하세요.
  6. 이제 장치 유형에 따라 서로 다른 SoundBank가 사용됩니다.

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요