5 개의 강의

목차

Wwise-Type을 사용하여 Game Parameter 설정하기

서서히 변화하는 효과 속성, 가상 보이스 설정, 볼륨 레벨을 지속적으로 제어하는 데에는 보통 Game Parameter를 사용합니다. Game Parameter를 쓰면 시간에 따른 사운드의 보간(interpolation)과 변화를 제어할 수 있습니다. Wwise Adventure Game에서 해를 예로 들어봅시다. 햇빛 소스는 TimeOfDay 프로퍼티에 의해 제어됩니다. Allegro Kingdom이 어두워지면서 해가 지는 것처럼 환경음 또한 밤에 맞는 환경음으로 변화해야 하겠죠?

이렇게 점진적으로 변화하는 환경음은 Blend Container으로 구현되어 있습니다. 여기 Time_of_Day Game Parameter의 값이 Day와 Night 환경음 재생을 제어합니다.

다음 단계에서는 WAG의 TimeOfDay 프로퍼티로 Time_of_Day Game Parameter를 작동시키는 법을 배우겠습니다. 그리고 Game Object Profiler를 사용해서 제대로 작동하는지 검토해봅시다.

  1. Unity 메뉴에서 Audiokinetic > Certification > 301 > Lesson 5 로 가서 Setting Game Parameters with Wwise-Types를 선택하세요.

  2. Hierarchy에서 Wwise 게임 오브젝트를 펼치고 Sun 게임 오브젝트를 선택하세요.

  3. Inspector에서 SetTimeOfDayRTPC라는 새로운 스크립트를 만드세요.

    [참고]

    스크립트 작성법을 모르실 경우 제 4강의 Wwise-Type Event 프로퍼티 만들기를 참고하세요.

  4. SetTimeOfDayRTPC 스크립트를 더블 클릭하면 코드 편집기에서 스크립트가 열립니다.

    우리의 목표는 게임 프레임마다 하루 중 시간대를 확인하고 알맞은 RTPC를 설정하는 스크립트를 만드는 것입니다. WAG에서 이 RTPC는 Time_of_Day라는 이름으로 이미 존재합니다. 이 RTPC를 업데이트하는 데에 Wwise-Type을 사용할 수 있습니다. 예상하셨듯이 RTPC에 사용하는 Wwise-Type은 바로 'AK.Wwise.RTPC'입니다. 클래스를 정의하고 'public' 접근 한정자를 사용하여 인스펙터에 나타나도록 해봅시다.

  5. SetTimeOfDayRTPC 클래스 안에 public AK.Wwise.RTPC를 입력하세요.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class SetTimeOfDayRTPC : MonoBehaviour {
        public AK.Wwise.RTPC
        // Use this for initialization
        void Start () {
        
        }
        
        // Update is called once per frame.
        void Update () {
                
        }
    }

  6. 변수의 이름을 TimeOfDayRTPC라고 하고 세미콜론 (;)으로 줄을 마무리하세요.

    publicclass SetTimeOfDayRTPC : MonoBehaviour {
    public AK.Wwise.RTPC TimeOfDayRTPC;
    
  7. Windows에서는 CTRL+S를, Mac에서는 CMD+S를 눌러서 스크립트를 저장하세요.

    이제 Inspector에 Wwise-Type RTPC의 값을 할당할 수 있는 프로퍼티 드로어가 보입니다. 하지만 이 프로퍼티는 스크립트에서 RTPC를 선택하는 것 외에는 아무 역할도 하지 않습니다. 이 프로퍼티는 게임 내 시간의 경과에 따라 지속적으로 업데이트되어야 합니다. 게임 프레임마다 업데이트되는 함수에서 이 프로퍼티를 호출해봅시다. 이 함수는 Update()라고 불리며 중괄호 안에 있는 모든 내용을 실행합니다.

  8. Update() 함수 안에 TimeOfDayRTPC.set를 입력하세요.

    // Update is called once per frame.
    void Update () {
        TimeOfDayRTPC.set
    }

    마침표 (.) 뒤에 계속해서 글자를 입력하면 사용 가능한 함수 중에서 입력한 내용과 비슷한 것을 Visual Studio가 찾아서 보여줍니다. SetGlobalValue와 SetValue라는 두 가지 옵션이 보이시나요? 메뉴가 나타나지 않는다면 TimeOfDayRTPC 전까지 다 삭제한 후 마침표 (.)를 추가하세요.

    SetValue() 함수를 사용할 경우, 이 게임 오브젝트에만 RTPC를 적용합니다. 하지만 지역별 환경음은 여러 가지 게임 오브젝트에 붙어있기 때문에 SetGlobalValue를 사용해서 동일한 Game Parameter를 통해 모든 게임 오브젝트에 적용하는 것이 바람직합니다.

  9. TimeOfDayRTPC 뒤에 SetGlobalValue 옵션을 클릭하거나 SetGlobalValue()를 입력하세요.

    // Update is called once per frame.
    void Update () {
        TimeOfDayRTPC.SetGlobalValue()
    }

    이제 RTPC Game Parameter로 값을 전송해야 합니다. Wwise Adventure Game에서 하루 중 시간의 경과는 DayNightCycle 스크립트를 통해 업데이트됩니다. 이 스크립트는 이 값을 GameManager에 지속적으로 전송하며 GameManager는 게임플레이 동안 다양한 전역적(global) 게임 변수를 추적합니다. 그렇기 때문에 TimeOfDayRTPC를 설정하려면 GameManager에서 값을 가져와 .SetGlobalValue() 함수를 사용해서 Wwise에 값을 전송하면 됩니다.

  10. SetGlobalValue 괄호 안에 GameManager.TimeOfDay를 입력하고 괄호 뒤에 세미콜론 (;)을 붙이세요.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class SetTimeOfDayRTPC : MonoBehaviour {
        public AK.Wwise.RTPC TimeOfDayRTPC;
        // Use this for initialization.
        void Start () {
          
        }
        
        // Update is called once per frame.
        void Update () {
            TimeOfDayRTPC.SetGlobalValue(GameManager.TimeOfDay);
        }
    }

    이제 스크립트 작성이 끝났으니 스크립트를 저장해봅시다.

  11. Windows에서는 CTRL+S를, Mac에서는 CMD+S를 눌러서 스크립트를 저장하세요.

    마지막으로 Time_of_Day Game Parameter를 Wwise-Type RTPC 변수에 할당해서 스크립트가 어떤 Game Parameter의 설정에 관여하는지 알게 해주어야 합니다.

  12. Unity에서 TimeOfDayRTPC 프로퍼티 드로어를 선택하고 Ambient를 펼쳐서 Time_Of_Day를 더블 클릭하세요.

    Game Object Profiler를 사용해서 Game Parameter가 업데이트되는지 확인해봅시다. Time_Of_Day Game Parameter를 선택하면 시간에 따라 값의 변화를 모니터링할 수 있습니다.

  13. Wwise에서 Layouts으로 가서 Game Object Profiler를 선택하세요.

    Game Object Profiler에서는 등록된 게임 오브젝트를 모니터링할 수 있습니다. 게임 오브젝트는 컴포넌트나 스크립트에서 Event를 게시할 때마다 등록(register)됩니다. 하지만 이렇게 값 함수를 전역적 범위로 설정하면 RTPC 값이 동일한 RTPC에 할당된 모든 게임 오브젝트에 적용되기 때문에 Game Object Profiler에서 Game Parameter 곡선을 확인하기 위해 게임 오브젝트를 지정할 필요가 없습니다.

    [작은 정보]

    Global과 Game Object 범위에 대해 더 알아보시려면 아래 Global과 Game Object 범위 이해하기 섹션을 참고해 주세요.

  14. Game Object Explorer에서 Watches 탭을 선택하세요.

  15. 선택 버튼(>>)을 사용해서 Global Game Object를 선택하세요.

    다음으로 모니터링하고자 하는 Game Parameter를 Game Sync Monitor에서 선택해야 합니다.

  16. Game Sync Monitor에서 Add를 클릭하세요.

  17. Ambient Work Unit을 펼쳐서 Time_of_Day Game Parameter를 선택하고 OK를 클릭하세요.

    이제 게임에 연결한 후 플레이하면 Game Sync Monitor에서 Game Parameter를 캡처합니다.

  18. Remote…를 클릭하세요.

  19. Remote Connections 뷰에서 Wwise Adventure Game (Editor)를 선택한 후 Connect를 클릭하세요.

  20. Unity에서 Play를 클릭하세요.

  21. Wwise로 돌아가서 Game Sync Monitor를 살펴봅시다.

    이제 Game Sync Monitor에 완만히 상승하는 곡선이 보입니다. 그 이유는 이 스크립트가 GameManager 스크립트의 TimeOfDay 매개 변수(parameter) 값을 사용하여 RTPC를 업데이트하기 때문입니다. 좀 더 급격한 변화를 보려면 WAG의 게임 메뉴에서 Time of Day 슬라이더를 변경해서 GameManager의 TimeOfDay 변수를 업데이트할 수 있습니다. 계속하기 전에 Play 모드를 종료해봅시다.

  22. ESC를 눌러서 WAG 메뉴를 연 후 Play를 다시 클릭해서 Play 모드를 종료하세요.