9일차 - 폭발효과음 내기

먼저 이번에 사용할 사운드 파일을 하나 골라서 다운받아 줍시다.

그리고 sound 폴더를 만들어서 관리해주고, 그 안에 사운드 파일을 넣어줍시다.

그리고 Empty 오브젝트를 하나 추가해서

SoundManager라고 이름 붙여줍시다.

그리고 Audio Source 컴포넌트를 AddComponent로 추가해주고 스크립트를 작성해 줄건데요.

public class soundManager : MonoBehaviour {
    public AudioClip soundExplosion; //재생할 소리를 변수로 담습니다.
    AudioSource myAudio; //AudioSorce 컴포넌트를 변수로 담습니다.
    public static soundManager instance;  //자기자신을 변수로 담습니다.
    void Awake() //Start보다도 먼저, 객체가 생성될때 호출됩니다
    {
        if (soundManager.instance == null) //incetance가 비어있는지 검사합니다.
        {
            soundManager.instance = this; //자기자신을 담습니다.
        }
    }
    void Start () {
        myAudio = this.gameObject.GetComponent<AudioSource>(); //AudioSource 오브젝트를 변수로 담습니다.
    }
    public void PlaySound()
    {
        myAudio.PlayOneShot(soundExplosion); //soundExplosion을 재생합니다.
    }
    void Update () {

    }
}

static을 사용 함으로써 정적인 객체가 되었고, 어디에서나 접근 가능하게 되었습니다.

이를통해 객체가 충돌하는 부분에 soundManager.instance.PlaySound()라는 한줄을 추가하는 것으로써 소리를 낼 수 있게 되었습니다.

Awake에 관하여
제가 Start는 씬이 생성될때 처음에만 호출되는 함수라고 했는데 Awake도 라뇨? 라고 의문을 가질 수 있지만 다른점이 있습니다. 객체는 활성화, 비활성화 상태를 가질 수 있는데, 객체가 비활성화 되었다가 활성화로 돌아가면 Start부터 호출되게 됩니다. 그에 비해 Awake는 단 한번만 실행됨을 보장 할 수 있는거죠.

results matching ""

    No results matching ""