FMOD Unity Integration 매뉴얼 한글화 작업 및 Unity 스크립트 적용방법 예제 (C#, C Sharp)

728x90

구글문서로 작성중이던 걸 그대로 복붙하여 들여쓰기가 해제되어 가독성이 좋지 않습니다.

가독성 개선 작업은 예정에 없습니다.

번역은 제 뇌와 AI의 합작입니다.

Scripting API Reference

유니티 Inspector 브라우저 UI

다음 중 하나를 사용하여 Events, Banks 및 Global Parameters를 선택하기 위한 사용자 정의 FMOD UI에 액세스할 수 있습니다.

Events

EventReference를 사용하여 이벤트에 대한 참조를 보관합니다.

—--------------------------------------------------------------------------

public class EventReferenceTest : MonoBehaviour

{

public FMODUnity.EventReference MyEvent;

}

—--------------------------------------------------------------------------

사진과 같은 UI가 표시됩니다 :

Banks

Bank 경로를 보유하기 위해 사용중인 문자열 속성에 “[FMODUnity.BankRef]” 속성을 사용합니다.

—--------------------------------------------------------------------------

public class BankRefTest : MonoBehaviour

{

[FMODUnity.BankRef]

public string MyBank1;

}

—--------------------------------------------------------------------------

사진과 같은 UI가 표시됩니다 :

Global Parameters

Global Parameter 경로를 보유하기 위해 사용중인 문자열 속성에 “[FMODUnity.ParamRef]” 속성을 사용합니다.

—--------------------------------------------------------------------------

public class ParamRefTest : MonoBehaviour

{

[FMODUnity.ParamRef]

public string MyParam1;

}

—--------------------------------------------------------------------------

사진과 같은 UI가 표시됩니다.

Scripting API Reference | Common

namespace FMODUnity에는 다음이 정의되어 있습니다.

EventRefrence

: 이벤트에 대한 참조를 유지

ImportType

: Banks를 프로젝트에 Import하는 방법

BankLoadType

: RuntimeManager에서 사용하는 자동 Bank 로드 옵션

MeterChannelOrderingType

: FMOD Studio의 미터링 채널 순서

EmitterGameEvent

: Studio Event Emitter, Global Parameter Trigger 및 Parameter Trigger 구성 요소에서 사용되는 Unity Events

LoaderGameEvent

: Bank Loader Component에서 사용하는 Unity Event

EmitterRef

: StudioEventEmitter 및 Parameter 정보에 대해 StudioParameterTrigger에서 사용하는 클래스입니다.

ParamRef

: 중요한 Parameter 정보를 저장하는 데 사용되는 클래스

ThreadAffinityGroup

: 스레드 유형 그룹의 선호도를 매핑하기 위한 클래스

ThreadAffinity

: 다른 스레드 선호도에 대해 열거

ThreadType

: 다양한 스레드 유형에 대해 열거

EventLinkage

: 이벤트를 EventReference에 연결하는 다양한 방법

BankLoadType

RuntimeManager에서 사용하는 자동 Bank Loading 옵션입니다.

—--------------------------------------------------------------------------

enum BankLoadType

{

All,

Specified,

None

}

—--------------------------------------------------------------------------

All

: StreamingAsset 폴더 내의 모든 Bank를 특정 순서 없이 로드

Specified

: 지정한 Bank만 해당 순서대로 로드

None

: 초기화 시 어느 Bank를 로드하지 않음. 사용자는 Bank를 로드해야만 함

—--------------------------------------------------------------------------

Localization 또는 DLC를 사용할 때 Bank가 로드되는 순서가 중요할 수 있습니다.

—--------------------------------------------------------------------------

참고항목 : Dialogue and Localization

EmitterGameEvent

Studio Event Emitter, Global Parameter Trigger 및 Parameter Trigger 구성 요소에서 사용되는 Unity Events입니다.

—--------------------------------------------------------------------------

enum EmitterGameEvent : int

{

None,

ObjectStart,

ObjectDestroy,

TriggerEnter,

TriggerExit,

TriggerEnter2D,

TriggerExit2D,

CollisionEnter,

CollisionExit,

CollisionEnter2D,

CollisionExit2D,

ObjectEnable,

ObjectDisable,

MouseEnter,

MouseExit,

MouseDown,

MouseUp,

}

—--------------------------------------------------------------------------

None

: 기본값

ObjectStart

: MonoBehaviour.Start()

업데이트 메서드를 처음 호출하기 직전에 스크립트를 사용하도록 설정하면 프레임에서 Start가 호출됩니다.

ObjectDestroy

: MonoBehaviour.OnDestroy()

OnDestroy는 씬(scene) 또는 게임이 종료될 때 발생하며 이전에 활성화된 게임 개체에서만 호출됩니다.

TriggerEnter

: MonoBehaviour.OnTriggerEnter()

OnTriggerEnter는 GameObject가 다른 GameObject와 충돌할 때 호출됩니다.

TriggerExit

: MonoBehaviour.OnTriggerExit()

OnTriggerExit()는 다른 장치가 트리거에 대한 접촉을 중지하면 종료가 호출됩니다.

ONTriggerEnter2D

: MonoBehaviour.OnTriggerEnter2D

다른 개체가 이 개체에 연결된 trigger collider에 들어갈 때 전송됩니다(2D physics만 해당).

TriggerExit2D

: MonoBehaviour.OnTriggerExit2D

다른 개체가 이 개체에 연결된 trigger collider에서 떠날 때 전송됩니다(2D physics만 해당).

CollisionEnter

: MonoBehaviour.OnCollisionEnter()

OnCollisionEnter는 이 collider/rigidbody가 다른 collider/rigidbody와 접촉하기 시작할 때 호출됩니다.

CollisionExit

: MonoBehaviour.OnCollisionExit()

OnCollisionExit는 이 collider/rigidbody가 다른 collider/rigidbody와 접촉하는 것을 멈춘 경우 호출됩니다.

CollisionEnter2D

: MonoBehaviour.OnCollisionEnter2D()

들어오는 collider가 이 개체의 collider와 접촉할 때 전송됩니다. (2D physics만 해당)

CollisionExit2D

: MonoBehaviour.OnCollisionExit2D()

다른 개체의 collider가 이 개체의 collider와 접촉을 그만둘 시 전송됩니다. (2D physics만 해당)

ObjectEnable

: MonoBehaviour.OnEnable()

이 기능은 개체가 활성화되면 호출됩니다.

ObjectDisable

: MonoBehaviour.OnDisable()

이 기능은 개체가 비활성화되면 호출됩니다.

MouseEnter

: MonoBehaviour.OnMouseEnter(),

이 기능은 마우스가 GUIElement 또는 Collider에 들어가면 호출됩니다.

MouseExit

: MonoBehaviour.OnMouseExit()

이 기능은 마우스가 더 이상 GUIElement 또는 Collider 위에 있지 않을 때 호출됩니다.

MouseDown

: MonoBehaviour.OnMouseDown()

이 기능은 사용자가 GUIelement 또는 Collider 위에서 마우스 버튼을 눌렀을 때 호출됩니다.

MouseUp

: MonoBehaviour.OnMouseUp()

사용자가 마우스 버튼을 놓으면 호출됩니다.

EmitterRef

StudioEventEmitter 및 Parameter 정보에 대해 StudioParameterTrigger에서 사용하는 클래스입니다.

—--------------------------------------------------------------------------

class EmitterRef

{

public StudioEventEmitter Target;

public ParamRef[] Params;

}

—--------------------------------------------------------------------------

Target

: 사용 중인 StudioEventEmitter

Params

: 대상 StudioEventEmitter에 대한 Parameter 정보 목록입니다.

참고항목 : StudioEventEmitter, ParamRef

EventLinkage

—--------------------------------------------------------------------------

enum EventLinkage

{

Path,

GUID,

}

—--------------------------------------------------------------------------

Path

: 이벤트 연결 Path

GUID

: 이벤트 연결 GUID

EventReference

FMOD Studio event에 참조를 보유합니다.

런타임에서 이벤트 GUID가 저장되며 이벤트를 볼 수 있는 가장 효율적인 방법입니다.편집기에서 이벤트 경로가 저장되며, 사용자 친화적인 UI를 사용하도록 설정합니다.

—--------------------------------------------------------------------------

[Serializable]

public struct EventReference

{

public FMOD.GUID Guid;

#if UNITY_EDITOR

public string Path;

public static Func<string, FMOD.GUID> GuidLookupDelegate;

public override string ToString()

{

    return string.Format("{0} ({1})", Guid, Path);

}

public bool IsNull

{

    get

    {

        return string.IsNullOrEmpty(Path) && Guid.IsNull;

    }

}

public static EventReference Find(string path)

{

    if (GuidLookupDelegate == null)

    {

        throw new InvalidOperationException("EventReference.Find called before EventManager was initialized");

    }

    return new EventReference { Path = path, Guid = GuidLookupDelegate(path) };

}

#else

public override string ToString()

{

    return Guid.ToString();

}

public bool IsNull

{

    get

    {

        return Guid.IsNull;

    }

}

#endif

}

—--------------------------------------------------------------------------

Guid

: Event의 GUID

Path

: Event의 경로. 에디터에서만 정의됩니다.

GuidLookupDelegate

: GUID를 검색하는 데 사용되는 Callback입니다. Find Method 내부에서 사용됩니다.

Find[string path]

: 경로별로 Event를 찾고 해당 Event를 가리키는 EventReference를 반환합니다. 에디터에서만 정의됩니다.

EventReference 필드의 기본값을 정의하려면 MonoBehavior의 Reset 메서드에서 Find를 호출합니다 :

—--------------------------------------------------------------------------

#if UNITY_EDITOR

void Reset()

{

    eventReference = FMODUnity.EventReference.Find("event:/music/music");

}

#endif

—--------------------------------------------------------------------------

ImportType

프로젝트에 Bank를 가져오는 방법.

—--------------------------------------------------------------------------

enum ImportType

{

StreamingAssets,

AssetBundle,

}

—--------------------------------------------------------------------------

StreamingAssets

: Bank를 StreamingAsset 폴더로 Import

AssetBundle

: 지정한 FMOD Asset Folder에 Bank를 binary data(.asset files)로 저장합니다.

참고 : AssetBundles & Addressables

LoaderGameEvent

Bank Loader component에 사용될 Unity Events

—--------------------------------------------------------------------------

enum LoaderGameEvent : int

{

None,

ObjectStart,

ObjectDestroy,

TriggerEnter,

TriggerExit,

TriggerEnter2D,

TriggerExit2D,

ObjectEnable,

ObjectDisable,

}

—--------------------------------------------------------------------------

None

: 기본값

ObjectStart

: MonoBehaviour.Start()

업데이트 메서드를 처음 호출하기 직전에 스크립트를 사용하도록 설정하면 프레임에서 Start가 호출됩니다.

ObjectDestroy

: MonoBehaviour.OnDestroy()

씬(scene) 또는 게임이 종료될 때 발생하며 이전에 활성화된 게임 개체에서만 호출됩니다.

TriggerEnter

: MonoBehaviour.OnTriggerEnter()

GameObject가 다른 GameObject와 충돌할 때 호출됩니다.

TriggerExit

: MonoBehaviour.OnTriggerExit()

트리거에 대한 접촉을 중지하면 종료가 호출됩니다.

TriggerEnter2D

: MonoBehaviour.OnTriggerEnter2D

다른 개체가 이 개체에 연결된 Trigger Collider에 들어갈 때 전송됨(2D 물리학만 해당).

TriggerExit2D

: MonoBehaviour.OnTriggerExit2D

다른 개체가 이 개체에 연결된 Trigger Collider에서 떠날 때 전송됨(2D 물리학만 해당).

ObjectEnable

: MonoBehaviour.OnEnable()

이 기능은 개체가 활성화되면 호출됨.

ObjectDisable

: MonoBehaviour.OnDisable()

이 기능은 동작이 비활성화되면 호출됨

MeterChannelOrderingType

FMOD Studio의 미터링 채널 순서

—--------------------------------------------------------------------------

enum MeterChannelOrderingType

{

Standard,

SeparateLFE,

Positional

}

—--------------------------------------------------------------------------

Standard

: (L, R, C, LFE, LS, RS, LSR, RSR, TFL, TFR, TBL, TBR)

SeparateLFE

: (L, R, LS, RS, LSR, RSR, TFL, TFR, TBL, TBR, LFE)

Positional

: (LSR, LS, L, C, R, RS, RSR, TBL, TFL, TFR, TBR, LFE)

참조 : Metering Channel Order.

ParamRef

중요한 매개 변수 정보를 저장하는 데 사용되는 클래스

—--------------------------------------------------------------------------

class ParamRef

{

public string Name;

public float Value;

public FMOD.Studio.PARAMETER_ID ID;

}

—--------------------------------------------------------------------------

Name

: 파라미터 이름

Value

: 파리미터 값

ID

: 파라미터 식별자

Scripting API Reference | RuntimeManager

RuntimeManager는 FMOD 유니티 통합을 위한 Helper 기능의 모음입니다. 게임에서 사용하는 FMOD Studio 시스템에 액세스하여 Event Instance를 Game Object에 신속하게 연결하고 Bank를 Load할 수 있습니다. 이러한 모든 기능은 다양한 FMOD Suite API 호출을 사용하여 수동으로 수행할 수 있습니다.

런타임 관리자를 통해 다음과 같은 기능을 사용할 수 있습니다.

—--------------------------------------------------------------------------

FMODUnity.RuntimeManager

—--------------------------------------------------------------------------

Properties :

CoreSystem

: FMOD 코어 시스템에 직접 액세스할 수 있습니다.

StudioSystem

: FMOD Studio 시스템에 직접 액세스할 수 있습니다.

IsInitialized

: 런타임 관리자가 초기화되고 유효한 경우 true를 반환합니다.

IsMuted

: 오디오가 음소거된 경우 true를 반환합니다.

HaveAllBanksLoaded

: 모든 Banks가 로드되었는지 확인합니다.

HaveMasterBanksLoaded

: 모든 Master Bank가 로드되었는지 확인합니다.

Methods :

CreateInstance

: 새로운 FMOD Studio EventInstance를 만듭니다.

PlayOneShot

: 지정된 위치에서 이벤트를 실행하고 잊어버립니다.

PlayOneShotAttached

: 지정된 GameObject 뒤에 오는 Event를 실행하고 잊어버립니다.

AttachInstanceToGameObject

: 지정한 인스턴스가 모든 프레임마다 Game Object Transform과 RigidBody Velocity에 일치하도록 3D 속성을 업데이트 합니다.

DetachInstanceFromGameObject

: 지정된 인스턴스는 더 이상 게임 개체를 추적하지 않습니다.

PathToGuid

: 문자열 Bank에서 경로와 연결된 GUID를 반환합니다.

PathToEventReference

: 문자열 Bank에서 GUID를 찾아 지정된 경로에 대한 EventReference를 만듭니다.

GetEventDescription

: 지정된 이벤트에 대한 FMOD::Studio::EventDescription이 반환됩니다.

PauseAllEvents

: 모든 FMOD Studio Events의 일시정지 상태를 지정된 값으로 설정합니다.

MuteAllEvents

: 모든 FMOD Studio Events의 음소거 상태를 지정된 값으로 설정합니다.

GetBus

: 지정된 버스를 찾습니다. 경로는 "bus:/"로 시작해야 합니다.

GetVCA

: 지정된 VCA를 찾습니다. 경로는 "vca:/"로 시작해야 합니다.

LoadBank

: Bank를 Load합니다. Bank가 이미 불러와진 경우 ref count를 늘립니다.

UnloadBank

: Bank의 ref count를 줄입니다. ref count가 0이 되면 bank를 unload합니다.

AnyBankLoading

: 사용 안 함. 대신 AnySampleDataLoading을 사용하세요.

AnySampleDataLoading

: LoadBank 완료에 의해 트리거된 비동기 샘플 로딩이 여전히 활성 상태인 경우 true를 반환합니다.

WaitForAllLoads

: 사용 안 함. 대신 WaitForAllSampleLoading을 사용.

WaitForAllSampleLoading

: 모든 비동기 샘플 로딩이 완료될 때까지 현재 thread를 차단합니다.

HasBankLoaded

:지정한 Bank가 로드되었는지 확인합니다.

SetListenerLocation

: 다음 값(다른 오브젝트의 값)을 리스너의 transform properties로 설정합니다.

AnyBankLoading

: 사용 안 함. 대신 AnySampleDataLoading 사용

—--------------------------------------------------------------------------

static bool AnyBankLoading();

—--------------------------------------------------------------------------

AnySampleDataLoading

:LoadBank 완료에 의해 트리거된 비동기 Sample Loading이 여전히 활성 상태인 경우 true를 반환합니다.

비동기식 뱅크 로드를 수행하는 플랫폼의 경우 먼저 뱅크 로드가 완료될 때까지 기다립니다.

자세한 내용은 Async Loading Example을 참조하십시오.

—--------------------------------------------------------------------------

static bool AnySampleDataLoading();

—--------------------------------------------------------------------------

AttachInstanceToGameObject

:지정한 인스턴스가 모든 프레임마다 GameObject Transform과 RigidBody Velocity에 일치하도록 3D 속성을 업데이트 합니다.

—--------------------------------------------------------------------------

static void AttachInstanceToGameObject(

FMOD.Studio.EventInstance instance,

Transform transform,

Rigidbody rigidBody

);

—--------------------------------------------------------------------------

static void AttachInstanceToGameObject(

FMOD.Studio.EventInstance instance,

Transform transform,

Rigidbody2D rigidBody2D

);

—--------------------------------------------------------------------------

static void AttachInstanceToGameObject(

FMOD.Studio.EventInstance instance,

Transform transform

);

—--------------------------------------------------------------------------

instance

: 위치가 업데이트되는 Event Instance입니다.

transform

: forward, up 및 position vectors를 가져올 Transform입니다.

rigidbody

: Rigidbody의 velocity가 변환되어 FMOD로 전달됩니다.

rigidbody2D

: Rigidbody2D의 velocity가 변환되어 FMOD로 전달됩니다.

CoreSystem

: FMOD 코어 시스템에 직접 액세스할 수 있습니다.

—--------------------------------------------------------------------------

static FMOD.System CoreSystem();

—--------------------------------------------------------------------------

참조 : Core API Reference

CreateInstance

: 새로운 FMOD::Studio::EventInstance를 만듭니다.

—--------------------------------------------------------------------------

static FMOD.Studio.EventInstance CreateInstance(

string path

);

—--------------------------------------------------------------------------

static FMOD.Studio.EventInstance CreateInstance(

Guid guid

);

—--------------------------------------------------------------------------

static FMOD.Studio.EventInstance CreateInstance(

EventReference eventReference

);

—--------------------------------------------------------------------------

path

: 전체 Event Path (eg. event:/Music/Level1)

guid

: 생성할 Event의 GUID

eventReference

: 생성할 Event의 Event reference

지정된 Event의 새 Instance를 반환합니다. Instance는 중지된 상태가 됩니다.

완료됐을 때 Instance에서 Release를 호출하는 것은 Caller의 responsibility입니다.

이벤트가 3D인 경우 위치가 Vector3(1e+18F, 1e+18F, 1e+18F)으로 설정됩니다.

AttachInstanceToGame 또는 EventInstance.set3DAttributes를 사용해야합니다.

참조 : PathToGUID, EventReference

DetachInstanceFromGameObject

: 지정된 Instance는 더 이상 GameObject를 추적하지 않습니다.

—--------------------------------------------------------------------------

static void DetachInstanceFromGameObject(

FMOD.Studio.EventInstance instance

);

—--------------------------------------------------------------------------

instance

: 모든 GameObject에서 분리하려는 Event Instance입니다.

GetBus

: 지정된 버스를 찾습니다. 경로는 "bus:/"로 시작해야 합니다.

—--------------------------------------------------------------------------

static FMOD.Studio.Bus GetBus(

string path

);

—--------------------------------------------------------------------------

path

: 전체 Event Path. (eg. bus:/Music)

GetEventDescription

: 지정한 Event에 대한 FMOD::Studio::EventDescription을 반환합니다.

—--------------------------------------------------------------------------

static FMOD.Studio.EventDescription GetEventDescription(

string path

);

—--------------------------------------------------------------------------

static FMOD.Studio.EventDescription GetEventDescription(

Guid guid

);

—--------------------------------------------------------------------------

path

: 전체 Event Path. (eg. event:/Music/Level1)

guid

: 생성할 Event의 GUID

참조 : PathToGUID

GetVCA

: 지정된 VCA를 찾습니다. 경로는 "vca:/"로 시작해야 합니다.

—--------------------------------------------------------------------------

static FMOD.Studio.VCA GetVCA(

string path

);

—--------------------------------------------------------------------------

path

: 전체 Event Path. (eg. vcat:/Music)

HasBankLoaded

: 지정한 Bank가 로드되었는지 확인합니다.

—--------------------------------------------------------------------------

static bool HasBankLoaded(

string bankName

);

—--------------------------------------------------------------------------

bankName

: bank의 이름

HaveAllBanksLoaded

: 모든 Bank가 로드되었는지 확인합니다.

—--------------------------------------------------------------------------

static bool HaveAllBanksLoaded();

—--------------------------------------------------------------------------

Runtime Manager(설정의 Load Banks 옵션, StudioBank Loader 또는 Load Bank)를 통해 모든 뱅크 로드가 완료된 경우 True입니다.

뱅크를 비동기식으로 로드해야 하는 플랫폼에 사용

  • 대부분의 플랫폼에서 Bank Loads가 차단됩니다. Async Loading(비동기 로딩)을 참조하십시오.

HaveMasterBanksLoaded

: 모든 Master Bank가 로드되었는지 확인합니다.

—--------------------------------------------------------------------------

static bool HaveMasterBanksLoaded();

—--------------------------------------------------------------------------

설정의 Load Banks 옵션(StudioBankLoader or LoadBank)을 통하거나 Runtime Manager를 통해 마스터 뱅크가 로드된 경우 True입니다.

IsInitialized

: RuntimeManager가 초기화되고 유효한 경우 true를 반환합니다.

—--------------------------------------------------------------------------

static bool IsInitialized;

—--------------------------------------------------------------------------

IsMuted

: 오디오가 음소거인 경우 true를 반환합니다.

—--------------------------------------------------------------------------

static bool IsMuted;

—--------------------------------------------------------------------------

MuteAllEvents(모든 이벤트 음소거)를 호출하거나 장면 편집기에서

음소거 버튼을 클릭하여 오디오를 음소거할 수 있습니다.

LoadBank

: Bank를 불러옵니다. 이미 로드된 경우 ref count를 증가시킵니다.

—--------------------------------------------------------------------------

static void LoadBank(

string bankName,

bool loadSamples = false

);

—--------------------------------------------------------------------------

static void LoadBank(

AssetReference assetReference,

bool loadSamples = false,

System.Action completionCallback = null

);

—--------------------------------------------------------------------------

static void LoadBank(

TextAsset asset,

bool loadSamples = false

);

—--------------------------------------------------------------------------

bankName

: bank의 이름

assetReference

: 주소 지정 기능을 사용 시 참조할 Bank asset

asset

: Asset Bundle에서 불러온 TextAsset

loadSamples

: Sample data를 불러오는 옵션으로 이벤트 생성 시간과 메모리 사용량 증가 비용을 줄일 수 있습니다.

completionCallback

: Bank를 불러온 후 호출하는 선택적 Callback(회신)

Split Bank를 사용하는 경우 먼저 'assets' bank를 로드하고 loadSample을 사용하여

matadata bank를 로드하십시오.

참고 : UnloadBank, AssetBundles & Addressables, Async Loading Example

MuteAllEvents

: 모든 FMOD Studio Events의 음소거 상태를 지정된 값으로 설정합니다.

—--------------------------------------------------------------------------

static void MuteAllEvents(

bool muted

);

—--------------------------------------------------------------------------

muted

: 음소거 상태를 설정할 상태입니다.

PathToEventReference

: 문자열 bank에서 GUID를 찾아 지정된 path에 대한 EventReference를 만듭니다.

—--------------------------------------------------------------------------

static EventReference PathToEventReference(

string path

);

—--------------------------------------------------------------------------

path

: 이벤트 전체 경로 (eg. event:/music/Level1)

PathToGUID

: 문자열 bank에서 path와 연결된 GUID를 반환합니다.

—--------------------------------------------------------------------------

static Guid PathToGUID(

string path

);

—--------------------------------------------------------------------------

path

: 이벤트 전체 경로 (eg. event:/music/Level1)

PauseAllEvents

: 모든 FMOD Studio 이벤트의 일시 정지 상태를 지정된 값으로 설정합니다.

PlayOneShot

: 지정한 Bank가 로드되었는지 확인합니다.

PlayOneShotAttached

: 지정한 Bank가 로드되었는지 확인합니다.

SetListenerLocation

: 지정한 Bank가 로드되었는지 확인합니다.

StudioSystem

: 지정한 Bank가 로드되었는지 확인합니다.

UnloadBank

: 지정한 Bank가 로드되었는지 확인합니다.

WaitForAllLoads

: 지정한 Bank가 로드되었는지 확인합니다.

WaitForAllSampleLoading

: 지정한 Bank가 로드되었는지 확인합니다.

예시

public class AudioWeatherVane : MonoBehaviour

{

// ParticleSystem은 반드시 ExternalForces를 설정해야 한다.

public ParticleSystem particleTracker;

[FMODUnity.EventRef]

// FMODUnity.EventRef 속성을 eventName에 추가하여

// 이벤트 셀렉터 GUI가 Inspector에 추가되게 한다.

public string eventName;

public string parameterName;

public float maxWindMagnitude = 1;

public float minWindMagnitude = 1;

public float avgWindMagnitude;

// 나중에 검색하거나 설정하게 될 이벤트와 파라미터 예시에 대한 코드 EventInstance

FMOD.Studio.EventInstance windEvent; // 이벤트

private ParticleSystem.Particle[] particles;

void Start()

{

particles = new ParticleSystem.Parttele[10];

// 시작 메소드에서 이벤트와 파라미터를 설치하는 부분

// RuntimeManager는 싱글톤 개체이므로 필수적으로 해야 할 일은 FMOD

// RuntimeManager에 이벤트를 만들고, 파라미터를 구할 이벤트를 사용하도록 요청

windEvent = FMODUnity.RuntimeManager.Createlnstance(eventName);

}

// FixedUpdate는 물리가 업데이트될 때 호출된다.

void FixedUpdate()

{

var magnitude = 0f;

if (particleTracker.GetParticles(particles) > 0) {

for (int i = 0; t < particles.Length; t++) {

magnitude += part ides [ i ]. veloc tty. magnitude;

}

avgWindMagnttude = magnitude / particles.Length;

minWindMagnitude = Mathf.Min(avgWindMagnttude, minWindMagnitude); maxWindMagnitude = Mathf.Max(avgWindMagnttude, maxWindMagnitude);

// 바람의 크기를 위해 정규화된 값 [0〜I]을 이용해 파라미터를 설정

// 게임 기기가 바뀌었을 때 더 편하게 대응하기 위해 정규화된 값을 사용.

windEvent.setParameterValue(parameterName,

(avgWindMagnttude - minWindMagnitude) / maxWindMagnitude);

}

}

}

head에서

using FMODUnity;

using FMOD.Studio;

클래스단에서

EventInstance Player;

EventReference Soundsource;

new Rigidbody rigidbody;

void start 또는 awake에서

rigidbody = GetComponent();

Player = RuntimeManager.CreateInstance(Soundsource);

RuntimeManager.AttachInstanceToGameObject(Player, GetComponent(), GetComponent()); //오브젝트에 사운드 부착

update에서

Player.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject, rigidbody)); //3D사운드 적용

Player.start();

Player.release();

단, 이대로 적용시 매 프레임마다 소리가 재생되어 사운드가 터지게 됩니다.

release();를 적용하지 않으면 정말 터집니다.

프로그래머가 알고리즘을 짜주면 거기다가 삽입하는 용도로 사용해야합니다.

private StudioEventEmitter name 으로 사용할 스튜디오이미터 변수의 이름을 선언한 후

name = getComponent(); 통해 오브젝트에 할당되어있는 스튜디오이미터 호출

​구현영상(기존 스크립트에 사운드 부분만 갈아끼움, 영상에는 footstep, gunsound만 들어가있으나 그 외 점프 사운드, 제트팩 등도 삽입해 둔 상태)