본문 바로가기
유니티 최고/유니티 기초

유니티(Unity) 기본적인 소리(sound) 출력하기 (여러sound 포함)

by Lee_story_.. 2022. 11. 7.
728x90

 

이번엔 소리를 출력하는 방법에 대해 알려드리겠습니다!

 

가장 먼저 소리를 출력하기 위해선

재생할 소리파일

출력해줄 곳

들려줄 곳?

 

이렇게 3개의 요소들이 필요한데 가장 먼저 소리파일 부터 보도록 하겠습니다.

 

 

유니티는 기본적으로 mp3, wav 파일 등을 지원 해주기에 바로 끌어다 사용해주시면 됩니다.

 

오디오 파일 - Unity 매뉴얼

메시 또는 텍스처와 마찬가지로 오디오 파일 에셋 워크플로는 문제 없이 매끄럽게 실행되도록 설계되어 있습니다. Unity는 일반적인 파일 포맷 대부분을 불러올 수 있지만 오디오 파일 작업을 할

docs.unity3d.com

 

만약 위의 지원 포맷에 없다면 변경한 다음 사용해주세요!

 

 

이렇게 끌어다 놓게 되면 Audio Clip이 생성되게 됩니다!

 

 

여기 까지 하셨다면 다음은 소리를 출력하기 위해 출력기를 설치해줘야 합니다.

 

바로  오디오 소스 컴포넌트 입니다. 

 

 

간단히 보면 제일 상단의 오디오 클립을 넣어두고 "play"하면 재생되게 도와주는 컴포넌로

 

재생될 파일을 넣어주시고 아래의 속성들을 제어 해주시면 됩니다.

(컴포넌트는 소리가 날 에셋에 추가해주시면 될 것같습니다!)

 

 

 

여기까지 하고 스크립을 통해 아래 처럼 제어할수있습니다.

public AudioSource myaudio;//출력오디오


//~~~~~


myaudio.Play(); // 출력


myaudio.Stop();// 출력멈춤

 

 

 

하지만 여기서 소리가 들리는 이유는 기본적으로 모든 카메라에 아래와 같은 리스너가 추가되어있기 때문입니다. 

만약 안들리신다면 리스너가 있는지 확인해주시면 될것같습니다!

 

 

여기까지가 소리 출력의 3요소가 끝이 났고

 

 


 

다음은 스크립을 통해 여러 오디오 클립을 순서대로 변경해 보겠습니다.

 

 

아래처럼 오디오 클립 리스트에 오디오들을 넣어주고 

그 순서대로 출력오디오에 클립을 지정해준뒤 출력해주면끝!

    public AudioClip[] Audios = new AudioClip[16];// 음성들
    
    
    
    ///~~~~~
    
    
    for(int i=0;i<16;i++){
    	 myaudio.clip = Audios[i];
         myaudio.play();
    }

 

하지만... 이렇게 되면..  플레이 되기전에 다른 오디오가 들어오면서 오류가....

 

 

 

 

그렇기에 저는 약간의 딜레이를 주었습니다.

 

아래처럼 invoke 함수를 이용해주면 순서대로 출력가능합니다! (딜레이 함수들은 추후에 정리하겠습니다.)

private int ind=0;

InvokeRepeating("playsound", 0.5f, 1.3f);// 0.5초후 1.3초마다 하나씩

public void playsound() // 음성출력

{
	
	myaudio.clip = Audios[ind];
	ind+=1;
}

 

 

여기서 약간의 에러를 일으킬수있는 play on awake 를  false로 해줍시다.

(자동재생 버튼인데 저희는 스크립으로 제어해줄 것이기에 false로 해줍시다.)

 

 

 

 

그럼 기본적인 사운드 출력은 끝!

 

 

틀린점이 있다면 댓 달아주세요!

댓글