< Return to Video

AudioMixer Snapshots - Unity Official Tutorials

  • 0:00 - 0:04
    Unity에서는 Snapshot을 사용해
  • 0:04 - 0:06
    오디오 믹서 에셋의 상태(State)를
  • 0:06 - 0:08
    저장하고 불러올 수 있습니다.
  • 0:09 - 0:12
    이 Audio Mixer의 Master Mixer에는
  • 0:12 - 0:15
    두 개의 스냅샷이 생성되어 있는데,
  • 0:15 - 0:19
    이 경우에는 Unpaused와 Paused입니다.
  • 0:19 - 0:22
    Unpaused에는 레벨들이 설정되어 있고,
  • 0:22 - 0:25
    Cutoff freq의 차단 주파수도
  • 0:25 - 0:27
    설정되어 있습니다.
  • 0:27 - 0:30
    이 경우는 22000hz이죠.
  • 0:31 - 0:34
    Paused 스냅샷을 클릭하면
  • 0:35 - 0:38
    Cutoff freq를
  • 0:38 - 0:41
    365hz로 새로 지정해 둔 것이 보입니다.
  • 0:41 - 0:43
    이렇게 되어 있으면
  • 0:43 - 0:45
    Master Mixer의 Music 그룹에서 실행되는
  • 0:45 - 0:48
    음악 트랙의 높은 주파수를 감쇠하게 됩니다.
  • 0:48 - 0:51
    Esc 키를 누르면
  • 0:51 - 0:54
    음악 트랙이 저역 필터링될 겁니다.
  • 0:54 - 0:55
    그럼 한 번 확인해 보겠습니다.
  • 0:57 - 0:59
    Esc를 누르면 음악 트랙이
  • 0:59 - 1:02
    저역 필터링되고, 다시 누르면 (원래대로 돌아옵니다).
  • 1:05 - 1:07
    새로운 Snapshot을 생성하려면
  • 1:07 - 1:10
    Snapshot 영역의 + 버튼을 클릭합니다.
  • 1:10 - 1:12
    이제 Unpaused의 사본을 만들었으니
  • 1:13 - 1:16
    원하는 값을 설정할 수 있습니다. 그런 다음에
  • 1:18 - 1:21
    스냅샷 이름을 클릭하여
  • 1:21 - 1:23
    그 값들을 에디터에서 소환할 수 있습니다.
  • 1:23 - 1:27
    런타임에서 스냅샷 값을 불러오려면
  • 1:27 - 1:30
    TransitionTo 함수를 사용합니다.
  • 1:30 - 1:34
    TransitionTo는 초 단위의 float 변수를 사용하며,
  • 1:34 - 1:37
    한 스냅샷과 다른 스냅샷 사이를
  • 1:37 - 1:40
    보간할 수 있습니다.
  • 1:40 - 1:42
    TransitionTo는
  • 1:42 - 1:45
    현재 트랜지션하려고 하는
  • 1:45 - 1:47
    Audio Mixer 스냅샷에서 호출합니다.
  • 1:48 - 1:50
    이 프로젝트에서는
  • 1:50 - 1:52
    MenuCanvas라는 게임 오브젝트가 있습니다.
  • 1:53 - 1:55
    MenuCanvas에는
  • 1:55 - 1:57
    PauseManager라는 스크립트가 붙어 있습니다.
  • 1:57 - 2:00
    Monodevelop에서 PauseManager를 살펴보겠습니다.
  • 2:00 - 2:02
    PauseManager에는
  • 2:02 - 2:06
    네임스페이스 선언 using UnityEngine.UI와
  • 2:06 - 2:09
    using UnityEngine.Audio가 추가되었습니다.
  • 2:09 - 2:11
    또한
  • 2:11 - 2:13
    현재 Unity 에디터를 사용하고 있는지 점검하고,
  • 2:13 - 2:15
    만일 그렇다면
  • 2:15 - 2:18
    UnityEditor 네임스페이스를 포함시킬 것입니다.
  • 2:19 - 2:21
    클래스 안에서는 두 개의
  • 2:21 - 2:25
    AudioMixerSnapshot형 public 변수 paused
  • 2:25 - 2:28
    와 unpaused를 선언했습니다.
  • 2:28 - 2:31
    또한 Canvas형 변수
  • 2:31 - 2:32
    canvas를 선언했습니다.
  • 2:32 - 2:34
    Start 함수에서는 GetComponent를 사용해
  • 2:34 - 2:38
    레퍼런스를 canvas 컴포넌트에 연결합니다.
  • 2:39 - 2:43
    Update 함수에서는 Esc 키가 눌러졌는지
  • 2:43 - 2:44
    확인합니다.
  • 2:44 - 2:46
    Esc 키가 눌러졌으면
  • 2:46 - 2:48
    canvas의 활성화 상태를
  • 2:48 - 2:51
    만일 Disabled이면 Enabled로,
  • 2:51 - 2:53
    Enabled이면 Disabled로 변경합니다.
  • 2:54 - 2:56
    또한 Pause 함수를 호출합니다.
  • 2:56 - 2:59
    Pause에서는
  • 2:59 - 3:01
    Time.timeScale이
  • 3:01 - 3:03
    0인지 확인합니다.
  • 3:03 - 3:06
    만일 0이 아니라면 0으로 설정하고,
  • 3:06 - 3:08
    0이라면 1이 되게 합니다.
  • 3:09 - 3:12
    다음으로는 Lowpass 함수를 호출합니다.
  • 3:14 - 3:17
    Lowpass 함수도 역시
  • 3:17 - 3:19
    Time.timeScale이 0과 같은지 확인합니다.
  • 3:19 - 3:23
    0이면 TransitionTo 함수를
  • 3:23 - 3:25
    Paused 스냅샷에서 호출합니다.
  • 3:25 - 3:27
    부동소수점 파라미터
  • 3:27 - 3:30
    timeToReach를 파싱할 텐데,
  • 3:30 - 3:32
    이 경우에는 0.01초입니다.
  • 3:32 - 3:35
    Time.timeScale이 0이 아니면
  • 3:35 - 3:38
    TransitionTo 함수를
  • 3:38 - 3:40
    Unpaused 스냅샷에서 호출하고,
  • 3:40 - 3:42
    이번에도 똑같이
  • 3:42 - 3:45
    0.01초 파라미터를
  • 3:45 - 3:47
    트랜지션 진행 시간이 되도록 파싱합니다.
  • 3:48 - 3:51
    public 함수 Quit으로
  • 3:51 - 3:53
    UnityEditor를 사용하는지 아닌지를 확인하고,
  • 3:53 - 3:56
    만일 사용한다면
  • 3:56 - 3:59
    EditorApplication.isPlaying을 false로 지정합니다.
  • 3:59 - 4:01
    이는 씬의 플레이를 중지하게 된다는 의미입니다.
  • 4:02 - 4:04
    만약, 에디터를 사용하지 않는다면
  • 4:04 - 4:07
    즉, 이것이 게임의 빌드이면
  • 4:07 - 4:09
    Application.Quit을 호출하는데, 이것은
  • 4:09 - 4:11
    애플리케이션을 종료하고 바탕화면으로 나간다는 의미입니다.
  • 4:15 - 4:18
    Unity 에디터에서는 Paused와
  • 4:18 - 4:20
    Unpaused 스냅샷이
  • 4:20 - 4:24
    Audio Mixer 스냅샷에 할당되어 있습니다.
  • 4:24 - 4:26
    여기 Master Mixer에서 생성한 스냅샷이죠.
  • 4:26 - 4:29
    이것을 변경하고 싶으면
  • 4:29 - 4:30
    Asset Picker를 이용해 그렇게 할 수 있습니다.
  • 4:32 - 4:35
    스냅샷 간에 트랜지션이 일어날 때
  • 4:35 - 4:38
    기본 보간 커브는 직선입니다.
  • 4:38 - 4:41
    이것을 변경하려면 파라미터를 선택하면 되는데,
  • 4:42 - 4:45
    파라미터를 오른쪽 버튼 클릭하고
  • 4:45 - 4:47
    오버라이드 트랜지션 유형 중에 하나를 선택하세요.
  • 4:47 - 4:50
    Smoothstep Snapshot 트랜지션 유형을 선택하면
  • 4:50 - 4:53
    S자 트랜지션 커브를 제공하고,
  • 4:54 - 4:57
    Squared는 포물선 커브,
  • 4:58 - 5:01
    SquareRoot은 제곱근 커브를 제공합니다.
  • 5:01 - 5:05
    BrickwallStart는 트랜지션 시작 시에
  • 5:05 - 5:07
    보관된 값으로
  • 5:07 - 5:10
    즉시 트랜지션하고,
  • 5:10 - 5:13
    BrickwallEnd는 트랜지션이 시간이 지날 때까지
  • 5:13 - 5:15
    기다렸다가 보관된 값으로
  • 5:15 - 5:19
    급격한 트랜지션을 진행합니다.
  • 5:20 - 5:22
    TransitionTo를 사용하는 것 외에도
  • 5:22 - 5:25
    여러 스냅샷을
  • 5:25 - 5:27
    보간한 블렌드로
  • 5:27 - 5:30
    트랜지션하는 방법도 있는데,
  • 5:30 - 5:32
    이때는 TransitionToSnapshots 함수를 사용합니다.
  • 5:32 - 5:36
    TransitionToSnapshots 함수는 세 개의 파라미터를 가집니다.
  • 5:37 - 5:41
    첫 번째는 Audio Mixer 스냅샷의 배열을 이용해
  • 5:41 - 5:44
    어떤 스냅샷을 가지고 블렌드를
  • 5:44 - 5:46
    생성할 것인지 선택할 수 있습니다.
  • 5:47 - 5:50
    두 번째 파라미터는 부동소수점형 배열로서,
  • 5:50 - 5:52
    결과로 얻은 블렌드에서 각 요소의 가중치(weight)를
  • 5:52 - 5:55
    정할 수 있습니다.
  • 5:55 - 5:58
    세 번째 파라미터는 초 단위의 부동소수점형 변수인데,
  • 5:58 - 6:00
    새로운 블렌드에 도달하는 데 걸리는
  • 6:00 - 6:04
    시간을 지정합니다.
  • 6:04 - 6:06
    TransitionToSnapshots은
  • 6:06 - 6:08
    스냅샷을 포함하는 Audio Mixer, 즉
  • 6:08 - 6:11
    지금 트랜지션을 진행하고 있는 믹서에서 호출합니다.
  • 6:11 - 6:16
    여기 세 개의 큐브 트리거가 셋업되어 있습니다.
  • 6:16 - 6:19
    플레이어가 이들 중 하나와 부딪치면
  • 6:19 - 6:22
    두 스냅샷의 블렌드로
  • 6:22 - 6:24
    트랜지션할 것입니다.
  • 6:25 - 6:28
    각 스냅샷들은
  • 6:28 - 6:31
    Sound Effects 서브 믹서에서 설정되었습니다.
  • 6:32 - 6:35
    Sound Effects 서브 믹서는
  • 6:35 - 6:37
    Master Mixer의 Sound Effects 그룹에서 실행됩니다.
  • 6:37 - 6:39
    이 예제에서는 음악을 껐습니다.
  • 6:41 - 6:44
    Sound Effects 믹서의 Gunshots 그룹에
  • 6:44 - 6:46
    Send 효과를 추가했습니다.
  • 6:48 - 6:50
    이 효과는 Add에서 Send를 선택하면 됩니다
  • 6:50 - 6:52
    이 효과의 역할은 Gunshots 시그널의 사본을
  • 6:52 - 6:54
    Reverb Return에 추가해 놓은
  • 6:54 - 6:56
    Receive 효과로 보내는 것입니다.
  • 6:56 - 6:58
    Receive 효과는 이 시그널을
  • 6:58 - 7:01
    SFX Reverb 효과로 보내고, 그 결과 총성은 마치
  • 7:01 - 7:05
    소리가 울리는 공간에서 처럼 들릴 것입니다.
  • 7:05 - 7:08
    두 개의 스냅샷을 설정하였습니다.
  • 7:08 - 7:13
    하나는 아무 리버브가 없도록(No Reverb)
  • 7:13 - 7:15
    총성 Send 효과의 Send 레벨이
  • 7:15 - 7:16
    완전히 내려진 경우이고,
  • 7:17 - 7:19
    다음은 반향이 크게 걸리도록(Heavy Reverb)
  • 7:19 - 7:21
    끝까지 최대로 올린 경우입니다.
  • 7:22 - 7:24
    어떻게 들리는지 들어보도록 하죠.
  • 7:26 - 7:27
    Edit In Play Mode를 눌러놓고,
  • 7:29 - 7:31
    클릭하면 반향이 전혀 들리지 않습니다.(No Reverb)
  • 7:32 - 7:33
    Heavy Reverb를 선택합니다.
  • 7:36 - 7:38
    이 경우에는 의도적으로 아주 강하고 비현실적인
  • 7:38 - 7:41
    리버브를 넣었기 때문에 반향이 확실히 들릴 겁니다.
  • 7:41 - 7:43
    이렇게 세 개의
  • 7:43 - 7:49
    투명한 큐브 ReverbTrigger 1, 2 그리고 3을 만들어 보았습니다.
  • 7:49 - 7:51
    각 Reverb Trigger는 ReverbTrigger 스크립트의
  • 7:51 - 7:53
    사본을 가지고 있습니다.
  • 7:53 - 7:55
    ReverbTrigger는 아주 간단한 스크립트로
  • 7:55 - 7:57
    ReverbCtrl 스크립트를 위한
  • 7:57 - 7:59
    public 변수 한 개와
  • 7:59 - 8:01
    정수형 변수 triggerNr가 들어 있습니다.
  • 8:03 - 8:05
    플레이어가
  • 8:05 - 8:07
    이 스크립트가 붙은 트리거와 충돌하면
  • 8:07 - 8:10
    ReverbCtrl의 BlendSnapshot 함수를 호출할 것입니다.
  • 8:10 - 8:15
    이건 정수 트리거 번호를 가질 테고요.
  • 8:15 - 8:18
    Unity에서는 Reverb Ctrl 변수를
  • 8:18 - 8:21
    할당해 놓았는데,
  • 8:21 - 8:24
    그 스크립트가 연결되어 있는
  • 8:24 - 8:26
    AudioMixerControl 오브젝트를 끌어다 놓으면 됩니다.
  • 8:26 - 8:30
    또한 고유한 Trigger Nr를
  • 8:30 - 8:32
    트리거 오브젝트에 각각 할당했습니다.
  • 8:32 - 8:36
    AudioMixerControl 게임 오브젝트는
  • 8:36 - 8:38
    ReverbCtrl 스크립트를 가집니다.
  • 8:38 - 8:40
    ReverbCtrl 스크립트에 들어가면
  • 8:40 - 8:44
    네임스페이스에 using UnityEngine.Audio를 선언해 놓았습니다.
  • 8:44 - 8:46
    이렇게 하면
  • 8:46 - 8:50
    AudioMixer, AudioMixerSnapshot 클래스 같은
  • 8:50 - 8:53
    UnityEngine.Audio의 멤버를 사용할 수 있습니다.
  • 8:54 - 8:57
    AudioMixer형 public 변수
  • 8:57 - 9:01
    mixer, 그리고
  • 9:01 - 9:03
    AudioMixerSnapshot의 배열
  • 9:03 - 9:05
    snapshots를 선언해 놓았습니다.
  • 9:05 - 9:09
    또한 public 부동소수점형 배열
  • 9:09 - 9:12
    weights를 선언했는데, 이것을 사용해
  • 9:12 - 9:16
    스냅샷 상태들 사이를 블렌드할 때
  • 9:16 - 9:20
    각 스냅샷의 가중치를 지정할 것입니다.
  • 9:20 - 9:24
    public 함수 BlendSnapshot이 있는데,
  • 9:24 - 9:28
    이것은 정수형 TriggerNr를 파라미터로 가집니다.
  • 9:28 - 9:30
    플레이어가 콜라이더와 충돌할 때
  • 9:30 - 9:34
    ReverbTrigger 스크립트에서 가지게되는 정수입니다.
  • 9:34 - 9:36
    다음으로는 switch 문이 있는데,
  • 9:36 - 9:38
    TriggerNr를 가지고
  • 9:38 - 9:39
    어느 콜라이더와 충돌하는지 선택합니다.
  • 9:39 - 9:42
    case 1, case 2, case 3이 있죠.
  • 9:42 - 9:44
    각 케이스에서는
  • 9:44 - 9:47
    weights 배열의 가중치를 지정할 겁니다.
  • 9:47 - 9:49
    각 스냅샷이 블렌드에 기여하는
  • 9:49 - 9:52
    퍼센티지를 정해주는 거죠.
  • 9:52 - 9:55
    case 1은 플레이어가 제일 오른쪽의
  • 9:55 - 9:58
    빨간색 트리거 콜라이더를 트리거하면 선택됩니다.
  • 9:58 - 10:01
    weights 배열의 가중치는
  • 10:01 - 10:03
    1.0과 0으로 지정할 것입니다.
  • 10:03 - 10:07
    이것은 결과로 얻는 스냅샷
  • 10:07 - 10:09
    블렌드가
  • 10:09 - 10:12
    mixer.TransitionToSnapshots 함수를 호출하면
  • 10:12 - 10:16
    생성되는 블렌드가
  • 10:16 - 10:18
    스냅샷 배열의 0에서는 스냅샷 100%,
  • 10:18 - 10:24
    스냅샷 배열의 1에서는 스냅샷 0%인 블렌드가 된다는 뜻입니다.
  • 10:24 - 10:27
    case 3에서는 그 반대가 됩니다.
  • 10:27 - 10:29
    이 경우에는 No Reverb 스냅샷 0%,
  • 10:29 - 10:33
    Heavy Reverb 스냅샷 100%가 되겠죠.
  • 10:33 - 10:35
    하지만 case 2에서는
  • 10:35 - 10:37
    흥미로운 변화가 있고
  • 10:37 - 10:39
    스냅샷으로의 트랜지션이 아주 유용해집니다.
  • 10:39 - 10:43
    여기에서 세 번째 리버브 상태가 만들어집니다.
  • 10:43 - 10:45
    No Reverb 스냅샷의 25%와
  • 10:45 - 10:49
    Heavy Reverb 스냅샷의
  • 10:49 - 10:53
    75% 블렌드로 트랜지션하는 거죠.
  • 10:53 - 10:56
    따라서
  • 10:56 - 10:59
    기존의 스냅샷 두 개의 블렌드로
  • 10:59 - 11:02
    트랜지션해서 세 번째 리버브 상태를 생성한 겁니다.
  • 11:02 - 11:04
    Unity에서 Reverb Ctrl 스크립트의
  • 11:04 - 11:06
    변수들을 할당해 놓았습니다.
  • 11:06 - 11:10
    Sound Effects Mixer 에셋을
  • 11:10 - 11:12
    Mixer 변수 슬롯으로 끌어다 놓았죠.
  • 11:12 - 11:15
    또한 스냅샷들도
  • 11:15 - 11:18
    리스트에서 클릭하고 선택해서 할당했습니다.
  • 11:18 - 11:21
    여기 보면 No Reverb 스냅샷이 있고,
  • 11:21 - 11:24
    여기에는 Heavy Reverb 스냅샷이 있습니다.
  • 11:24 - 11:26
    또한 Weights 배열의 Size는
  • 11:26 - 11:28
    2로 지정했습니다.
  • 11:28 - 11:30
    그러면 Snapshots 배열의 Size와
  • 11:30 - 11:32
    일치합니다. 따라서 이 요소들의 리스트가
  • 11:32 - 11:34
    정렬되겠죠.
  • 11:34 - 11:36
    여기서 값을 초기화하지 않은 것은
  • 11:36 - 11:39
    런타임에 스크립트에 의해 지정될 것이기 때문입니다.
  • 11:39 - 11:43
    이걸 시험해 볼 때는
  • 11:43 - 11:46
    Gunshots 트랙의 Reverb Return 레벨과
  • 11:46 - 11:48
    캐릭터가 각기 다른 트리거를 통과할 때
  • 11:48 - 11:51
    어떻게 달라지는지 주의해서 보도록 하세요.
  • 11:51 - 11:53
    그럼 한 번 시험해 보겠습니다.
  • 12:10 - 12:12
    여기서 한 일이 뭔가 하면
  • 12:12 - 12:16
    두 개의 스냅샷 No Reverb와 Heavy Reverb를 사용해서
  • 12:16 - 12:19
    보라색 콜라이더로 보여지는
  • 12:19 - 12:21
    이 세 번째 블렌드 스냅샷을 만들어낸 것입니다.
  • 12:21 - 12:24
    그리고 여기서는 리버브를 보이도록 선택했지만
  • 12:24 - 12:26
    이 기술은 모든 종류의 오디오 상태에 적용할 수 있고,
  • 12:26 - 12:29
    스냅샷에 저장할 수 있는
  • 12:29 - 12:32
    어떤 유형의 믹서 상태도
  • 12:32 - 12:34
    이와 똑같은 방법을 이용해
  • 12:34 - 12:37
    블렌드하고 불러올 수 있습니다.
Title:
AudioMixer Snapshots - Unity Official Tutorials
Description:

more » « less
Duration:
12:38

Korean subtitles

Revisions