Unity-오디오 소개
게임이 오디오를 강조하는 데에는 이유가 있습니다. 게임에 미적 가치를 더하는 것은 매우 중요합니다. 처음부터Pong, 하나는 번갈아 패들을 치는 공에서 경고음과 붑 소리를들을 수 있습니다. 당시에는 정말 간단한 짧은 구형파 샘플 이었지만 모든 비디오 게임의 할아버지에게 더 많은 것을 원할 수 있습니까?
실생활에서 많은 것들이 소리를 인식하는 방식에 영향을 미칩니다. 물체의 속도, 어떤 시나리오에 있는지, 어떤 방향에서 오는지.
엔진에 불필요한 부하를 유발할 수있는 여러 요인이 있습니다. 대신, 우리는 사운드가 게임에서 어떻게 작동하는지에 대한 아이디어를 만들고이를 기반으로 구축하려고합니다. 이것은 처리해야 할 3 개의 축이있는 3D 게임에서 특히 두드러집니다.
Unity에는 오디오 인식 및 재생을위한 전용 구성 요소가 있습니다. 이러한 구성 요소는 함께 작동하여 게임에 자연스럽게 느껴지는 믿을 수있는 사운드 시스템을 만듭니다.
Unity는 리버브, 도플러 효과, 실시간 믹싱 및 효과 등과 같은 유용한 도구와 효과를 제공합니다. 이에 대해서는 다음 장에서 자세히 알아볼 것입니다.
오디오 구성 요소
이 섹션에서는 Unity의 오디오와 관련된 3 가지 주요 구성 요소에 대해 알아 봅니다.
AudioSource
AudioSource 컴포넌트는 사운드를 재생하기 위해 GameObject에 연결하는 기본 컴포넌트입니다. 그것은 재생됩니다AudioClip 믹서, 코드 또는 기본적으로 깨어날 때 트리거됩니다.
AudioClip은 AudioSource에로드되는 단순히 사운드 파일입니다. .mp3, .wav 등과 같은 표준 오디오 파일 일 수 있습니다. AudioClip은 그 자체로도 구성 요소입니다.
AudioListener
AudioListener는 listens장면에서 재생되는 모든 오디오에 연결하고 컴퓨터의 스피커로 전송합니다. 그것은ears게임의. 들리는 모든 오디오는이 AudioListener의 위치를 기준으로합니다. 제대로 작동하려면 하나의 AudioListener 만 장면에 있어야합니다. 기본적으로 기본 카메라에는 Listener가 연결되어 있습니다. Listener에는 디자이너가 관심을 갖고 싶어하는 노출 된 속성이 없습니다.
오디오 필터
AudioSource의 출력 또는 AudioListener의 입력은 오디오 필터의 도움으로 수정할 수 있습니다. 리버브, 코러스, 필터링 등을 변경할 수있는 특정 구성 요소입니다. 각 특정 필터는 소리를 조정하기 위해 노출 된 값이있는 자체 구성 요소로 제공됩니다.
소리 재생
클릭하면 소리가 나는 버튼을 만들어 보겠습니다. 시작하려면Create 원형 스프라이트를 만들고 빨간색으로 만듭니다.
이제 우리는 Audio Source 이 스프라이트에.
물체가 소리를 내려면 하나를 주어야합니다. 이 음향 효과를 우리의 목적으로 사용합시다.
http://www.orangefreesounds.com/ding-sfx/
사운드 효과를 다운로드하고 자산으로 드래그하십시오.
Unity가이 자산을 사운드 파일로 가져 오면 자동으로 AudioClip. 따라서이 사운드 클립을 자산에서 스프라이트의 오디오 소스에있는 오디오 클립 슬롯으로 직접 드래그 할 수 있습니다.
사운드 클립을 자산에서 스프라이트의 오디오 소스에있는 오디오 클립 슬롯으로 직접 드래그 한 후 오디오 소스 속성에서 "깨어있을 때 재생"을 선택 해제해야합니다. 그렇게하지 않으면 게임이 시작되는 순간 사운드가 재생됩니다.
이제 코드를 살펴 보겠습니다. "BellSound"라는 새 스크립트를 만들고 엽니 다.
오디오 소스는 코드를 통해 제어되기 때문에 먼저 참조를 얻고 싶습니다. 이전과 같이 GetComponent 메서드를 사용합니다.
public class BellSound : MonoBehaviour {
AudioSource mySource;
// Use this for initialization
void Start () {
mySource = GetComponent<AudioSource>();
}
이제 클릭되는 객체를 감지하는 방법을 설정해 보겠습니다. MonoBehaviour는 우리에게 필요한 OnMouseDown이라는 메서드를 제공합니다. 이 메서드는 마우스가 범위 내에서 클릭 할 때마다 호출됩니다.collider 그 게임 오브젝트의.
아직 버튼에 충돌체를 연결하지 않았으므로 지금 연결하겠습니다.
이것에는 Rigidbody가 필요하지 않습니다. 이 충돌체에 코드로 액세스 할 필요도 없습니다. 방법이 작동하려면 거기에 있어야합니다.
방법을 테스트하고 작동하는지 살펴 보겠습니다. 스크립트에 다음 코드를 작성하고 버튼에 첨부합니다.
void OnMouseDown() {
Debug.Log(“Clicked!”);
}
스크립트를 저장하고 첨부하면 게임을 실행하십시오. 버튼을 클릭하면 콘솔에 메시지가 나타납니다.
이제 사운드 재생에서 한 단계 떨어져 있습니다. 지금해야 할 일은Play Audio Source 인스턴스의 메서드.
void OnMouseDown() {
mySource.Play();
}
스크립트를 저장하고 게임에서 실행하십시오. 버튼을 클릭하면 소리가 재생됩니다!
Note− 클릭 할 때마다 피치가 올라가는 버튼을 만드는 것을 고려하십시오. 사용하다mySource.pitch 카운터가 있고 알아낼 수 있는지 확인하세요.)