4 개의 강의

목차

Wwise-Type Event 프로퍼티 만들기

먼저 Unity에서 스크립트를 만들고 Wwise-Type Event 클래스 변수를 만들어봅시다. 변수는 스크립트에서 정보를 저장하는 방법으로써, Inspector에 노출하여 Unity 에디터에서 그 값을 쉽게 편집할 수 있습니다. 그러기 위해서 먼저 새로운 스크립트에 코드를 한 줄 추가해서 내용을 수정해봅시다. 만약 코드 편집기를 처음 사용하시더라도 걱정하지 마세요. 코드와 코드 편집기 모두 함께 살펴보도록 합시다.

  1. Unity에서 Audiokinetic > Certification > 301 > Lesson 4로 가서 Posting Events using Wwise-Types를 선택하세요.

  2. Hierarchy에서 Player 게임 오브젝트를 선택하세요.

    이번에는 미리 만들어진 컴포넌트를 추가하는 대신 우리가 직접 컴포넌트를 만들어봅시다.

  3. Inspector에서 Add Component를 클릭하고 New Script로 가세요.

    New Script 옵션을 선택하면 스크립트를 원하는 이름으로 지정할 수 있습니다. 나중에 스크립트 이름을 변경하기가 힘들 수 있기 때문에 다음 단계에서 오타가 나지 않도록 주의하세요. 이 스크립트는 재사용할 것이니 자격증 과정에 있는 내용과 여러분의 스크립트를 비교해보시기 바랍니다. C#으로 스크립트를 작성할 것이기 때문에 Language 프로퍼티를 변경하지 마세요.

  4. PostWwiseEvent를 입력하고 Create and Add를 클릭하세요.

    Inspector에서 방금 만든 PostWwiseEvent 컴포넌트가 보이실 것입니다. 이 스크립트는 프로젝트에 자동으로 저장되며 스크립트를 더블 클릭하여 열거나 Project 창을 통해 다시 열 수 있습니다.

    [참고]

    Unity가 스크립트를 프로젝트에 완전히 통합하는 데에는 시간이 좀 걸릴 수 있기 때문에 스크립트를 열기 전에 체크 상자 옆에 새로운 스크립트의 이름이 보일 때까지 기다려주세요.

  5. Script 프로퍼티에서 PostWwiseEvent를 더블 클릭하세요.

    Unity와 같이 설치되었던 Visual Studio (Mac의 경우 MonoDevelop) 코드 편집기의 새로운 탭에 스크립트의 내용이 표시됩니다. Visual Studio나 MonoDevelop는 텍스트를 사용하여 작업하는 기본 텍스트 편집기와 아주 비슷하지만 주로 Unity 스크립트와 같은 코드를 편집할 때 사용됩니다. Visual Studio는 참조하기 쉽도록 줄에 번호를 매기고 구문 강조 표시로 텍스트를 표시해주기 때문에 코드 타입(클래스, 함수, 프로퍼티 등)에 따라 텍스트의 색깔이 다르게 표시됩니다. 뿐만 아니라 사용 가능한 함수나 프로퍼티 이름을 추천해주며 오류가 있을 경우 코드 아래 빨간 줄을 표시하여 코드 작성을 도와줍니다.

    [참고]

    Visual Studio(Mac의 경우 MonoDevelop)는 Unity 설치 패키지에 포함되어 있습니다. 원하지 않는 코드 편집기가 열리거나 아무 것도 열리지 않을 경우 Unity menu > Edit > Preferences > External Tools로 가서 원하는 코드 편집기를 선택하세요. 설치하지 않았을 경우 자격증 과정 서두의 'Unity 설치' 부분을 참조하시기 바랍니다.

    이제 스크립트가 기본적으로 어떤 모습을 하고 있는지 살펴봅시다. 스크립트가 완전히 비어 있지 않고 몇 가지가 이미 준비된 것이 보이실 것입니다.

    위에 있는 스크린샷에서는 코드 편집기가 스크립트를 어떻게 표시하는지를 보여줍니다. 하지만 이 자격증 과정의 스크립트에서는 코드가 아래와 같이 표시될 가능성이 높습니다.

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

    [참고]

    이 자격증 과정의 모든 스크립트 내용은 여러분의 스크립트에 간편하게 복사해 넣을 수 있습니다. 그렇기 때문에 스크립트를 실수로 삭제하거나, 실습 과제를 건너 뛰거나, 스크립트 실행에 문제가 있다면 코드 편집기에 있는 모든 텍스트를 지우고 '참고 스크립트' 섹션에서 관련 스크립트 텍스트를 복사해서 코드 편집기에 붙여넣으실 수 있습니다.

    이제 이 스크립트의 다른 부분을 살펴봅시다.

    • 네임스페이스(namespace): 스크립트의 가장 윗 부분에는 using으로 시작하는 몇 줄이 있습니다. 이 키워드는 이 줄이 네임스페이스임을 말해줍니다. 네임스페이스는 클래스의 집합으로, 스크립트 작성을 보다 쉽게 만들어줍니다.

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;

    • 클래스: 네임스페이스 아래는 MonoBehaviour라고 설정된 클래스가 있습니다. 이 클래스는 사용하게 될 모든 변수, 프로퍼티, 함수를 담은 컨테이너입니다. 이 클래스에서 선언되는 모든 것들은 '{' 기호와 '}' 사이에 있어야 합니다. 그래야 스크립트에서 어떤 부분이 클래스에 속하는지 인식시킬 수 있습니다.

      public class PostWwiseEvent : MonoBehaviour {
          // Use this for initialization.
          void Start () {
          
          }
          
          // Update is called once per frame.
          void Update () {
          
          }
      }

      스크립트 이름 클래스 안에 선언되는 내용은 스크립트가 Scene에 추가될 때 사용할 수 있습니다. 모든 보이는 변수는 스크립트 이름 아래 나타납니다.

    • 함수: 클래스 안에는 Start()와 Update()라는 두 가지 함수가 있습니다. 이 함수는 캡슐화된 코드 조각으로 Unity나 다른 스크립트에서 호출됩니다. Start()는 Scene을 실행할 때 호출됩니다. Update는 Start()가 호출된 후 게임이 실행되는 동안 매 프레임 호출됩니다.

      함수 이름 앞에는 리턴 타입(return type, 반환 유형)이 있는데, 이 자격증 과정에서는 이 부분을 아무것도 반환하지 않는 void로 놔둘 것입니다.

          // Use this for initialization. 
          void Start () {
      
          }
          // Update is called once per frame. 
          void Update () {
          
          }

      각 함수 위에 슬래쉬 두 개 '//'로 시작하는 텍스트가 보이실 것입니다. 이 텍스트는 한 줄 주석으로 개발자들이 프로퍼티나 함수 등을 설명하는 데에 쓰입니다. Unity는 '//' 기호 오른쪽에 있는 모든 텍스트를 무시합니다.

    [참고]

    여는 중괄호 '{'가 클래스나 함수 이름과 동일한 줄에 있는 것이 보이실 것입니다. 이 부분은 스크립트의 길이를 줄이기 위해 이 자격증 과정에서 사용하는 코드 스타일에 불과하므로 스크립트에 영향을 주지는 않습니다.

    Inspector에서 사용할 수 있도록 프로퍼티를 표시하려면 프로퍼티를 PostWwiseEvent 클래스에 추가해야 합니다. 이것은 프로퍼티가 코드 안에서 클래스의 여는 중괄호와 닫히는 중괄호 안에 있어야 할 뿐만 아니라 Start()와 Update() 함수 밖에 있어야 함을 의미합니다.

    [참고]

    이 자격증 과정뿐만 아니라 Unity의 스크립팅 초보자 가이드 - 초보자를 위한 Unity에서의 C# 코딩 방법을 참고하셔도 좋습니다.

    그렇다면 스크립트에 무엇을 추가해야 할까요? Event에 대한 정보를 담을 프로퍼티를 만들어야 합니다. 프로퍼티(property, 속성)는 접근 한정자(access modifier), 프로퍼티 타입, 여러분이 지정한 이름, 이렇게 세 가지 부분으로 선언됩니다.

    접근 한정자는 프로퍼티가 스크립트 밖에서 보이게 할지 말지를 결정합니다. 여기에서는 Unity가 프로퍼티를 인식하고 Inspector에 추가해줘야 하기 때문에 public으로 설정해야 합니다.

    [참고]

    Visual Studio를 사용하신다면 텍스트 아래에 추천 내용이 드롭다운 메뉴로 나타나는 것을 보셨을 것입니다. 이것을 IntelliSense라고 합니다. 이 기능은 모든 코드 편집기에서 제공되지는 않기 때문에 드롭다운 메뉴를 사용하지 않고 직접 텍스트를 입력해서 스크립트를 작성하셔야 할 수도 있습니다.

  6. PostWwiseEvent : MonoBehaviour 클래스 안이면서 함수의 바깥인 곳에서 빈 줄을 선택하고 public을 입력하세요.

    [참고]

    앞으로 이 과정에서는 아래 스크립트와 같이 여러분이 적용해야 하는 변경 사항을 주황색으로 강조 표시 해드립니다 .

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

    우리의 경우 프로퍼티가 'Event' Wwise-Type 클래스여야 합니다. 모든 Wwise-Type 클래스는 'AK.Wwise.' 뒤에 클래스 타입(Event, RTPC, State 등)을 입력하여 만들 수 있습니다. 그렇기 때문에 Wwise-Type Event 클래스는 'AK.Wwise.Event'로 선언됩니다.

  7. public 뒤에 한 칸을 띄어쓴 후 AK.Wwise.Event를 입력하세요.

    public class PostWwiseEvent : MonoBehaviour {    
        public AK.Wwise.Event 
        // Use this for initialization.
        public void Start () {
        
        }

    프로퍼티 타입이 선언되었습니다. 이제 알아볼 수 있도록 Inspector에 표시할 프로퍼티의 이름을 지정해야 합니다.

    [참고]

    프로퍼티 이름은 Wwise 프로젝트에서 선택할 특정 Event와 관련이 없어도 됩니다. 프로퍼티 이름은 사운드 디자이너가 프로퍼티 드로어에 어떤 유형의 Wwise 오브젝트를 넣을 수 있는지 효율적으로 표시할 수 있는 이름표라고 할 수 있습니다. 예를 들어 Wwise Event의 이름이 소리를 설명할 수 있게끔 짓고 싶으실 수도 있겠지만 (예: Enemy_Explosion) 게임 호출의 이름을 소리가 재생되는 때로 지으면 (예: EnemyDeath) 레벨 디자이너가 이 소리가 호출될 시기를 알 수 있습니다.

  8. Ak.Wwise.Event 뒤에 한 칸을 띄어쓴 후 MyEvent를 입력하세요.

    public class PostWwiseEvent : MonoBehaviour {
        public AK.Wwise.Event MyEvent

    마지막으로 아주 중요한 작업이 남아있습니다. 이런 종류의 프로그래밍 언어(C#)를 쓸 때는 그 줄이 끝나는 부분을 세미콜론(;)으로 선언해야 합니다. 그 줄이 끝났음을 알려줘야 코드 편집기에서 코드의 시작과 끝 부분을 인식합니다. 세미콜론 없이는 코드 편집기가 오류가 있는 위치를 감지하지 못하기 때문에 잘못된 도움말을 표시할 수도 있습니다. 그렇기 때문에 이상한 도움말이나 코드에 빨간 밑줄이 표시될 경우 스크립트에 세미콜론이나 중괄호가 필요한지 확인해보세요.

  9. AK.Wwise.Event MyEvent 뒤에 세미콜론 (;)을 추가하세요.

    public class PostWwiseEvent : MonoBehaviour {
        public AK.Wwise.Event MyEvent;

    이제 첫 번째 프로퍼티인 'MyEvent'라는 퍼블릭 Event 프로퍼티가 생성되었습니다. 하지만 Unity는 스크립트가 저장될 때까지 이 변경 사항을 알지 못합니다.

  10. Windows의 경우 CTRL+S , Mac의 경우 CMD+S를 눌러서 스크립트를 저장하세요.

[작은 정보]

Code Editor에서 스크립트를 저장하고 Unity로 돌아가면 Unity가 여러분이 만든 변경 사항을 불러와야 하기 때문에 로딩 시에는 잠시 프로그램이 응답하지 않을 수도 있습니다.

이제 Unity Inspector의 PostWwiseEvent 스크립트 아래에 프로퍼티 드로어가 보이실 것입니다.

Wwise-Type Event 클래스를 사용했기 때문에 Wwise Project에서 Wwise Event를 선택할 수 있는 버튼이 자동으로 제공됩니다. 하지만 아직 코드가 완성되지 않았습니다. Unity는 Event Wwise Type을 사용할 수 있다는 것은 알지만 이 이벤트로 무엇을 해야 하는지는 아직 알지 못합니다.

다음 섹션에서 게임 오브젝트에 Event를 게시할 수 있는 기능을 스크립트에 추가하고 특정 Event를 Inspector에서 선택해봅시다.