์ง์ง ๋ฏธ์ํด ์ค๋ช ์ด์ฌํ ํด์คฌ๋๋ฐ ์์ง ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ๊ฐ๋ ์ด ์๋ฒฝํ ์๋ฆฌ๋ฐํ์์ง๊ฐ ์์์ ๋ช๋ช ๋ฌธ์ฅ์ ์ดํด๋ฅผ ๋ชปํ๋ค
์ผ๋จ ์ต๋ํ ๋งํด์ค๊ฑธ๋ก ์ฐพ์๋ณด๋๊น
์ง์ง๋ก ๊ฒ์ ์์์ ์ํค๋๊น ์ค๋์ค์์ค์ ํ ๋นํด๋จ๋ ์ปดํฌ๋ํธ๋ค์ด ๋ค ๋น ์ ธ๋๊ฐ๊ณ null์ด ๋ผ ์๋๋ผ๊ณ
์ด๊ฑฐ ์ด์ผ ํ๊ฐํด์ผ ํ๋ ์ง์ง
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundManager : MonoBehaviour
{
ย ย public AudioSource[] DdgSFX; ย ย // ์ค๋์ค์์ค
ย ย public AudioClip[] DdgClip; ย ย // ์ค๋์คํด๋ฆฝ
ย ย public enum Ddg { MoveUp, MoveDown, OnGround, PlusScore }; ย // ๊ฐ ์ํ์ ์ด๊ฑฐํ
ย ย int cursor; ย ย // ๋ช ๋ฒ์งธ ์๋์ง์ ๋ฐ๋ฅธ ์ธ๋ฑ์ค๊ฐ
ย ย private void Awake() {
ย ย ย ย DdgSFX = GetComponents<AudioSource>();
ย ย ย ย DdgClip = GetComponents<AudioClip>();
ย ย }
ย ย public void DdgPlaySound(Ddg type)
ย ย {
ย ย ย ย switch(type)
ย ย ย ย {
ย ย ย ย ย ย case Ddg.MoveUp:
ย ย ย ย ย ย ย ย DdgSFX[cursor].clip = DdgClip[0];
ย ย ย ย ย ย ย ย break;
ย ย ย ย ย ย case Ddg.MoveDown:
ย ย ย ย ย ย ย ย DdgSFX[cursor].clip = DdgClip[1];
ย ย ย ย ย ย ย ย break;
ย ย ย ย ย ย case Ddg.OnGround:
ย ย ย ย ย ย ย ย DdgSFX[cursor].clip = DdgClip[2];
ย ย ย ย ย ย ย ย break;
ย ย ย ย ย ย case Ddg.PlusScore:
ย ย ย ย ย ย ย ย DdgSFX[cursor].clip = DdgClip[3];
ย ย ย ย ย ย ย ย break;
ย ย ย ย }
ย ย ย ย DdgSFX[cursor].Play();
ย ย ย ย cursor = (cursor + 1) % DdgSFX.Length;
ย ย }
}
์ค๋์ค ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ
Awake(){}์์ ๋ฃ๊ณ ์์์
์ฅ ๋ญ์ง? ๊ทธ๋์ Awake์ GetComponent ์ฃผ์์ฒ๋ฆฌํ๊ณ ์คํํ๋๊น ๋ฐฐ์ด ์๋น ์ง๋๋ฐ๋ ๋๋ ํผ๋ฐ์ค ์์ธ ๋ธ ๋ญ์ง??
awake์์ AudioSource ๋ GetComponentsInChildren ์ผ๋ก ๊ฐ์ ธ์์ผํ๊ณ , ์์ ์ด ์๋ ์์๋ค ๊ฑฐ ๊ฐ์ ธ์์ผํ๋๊น. Audio Clip์ ์ปดํฌ๋ํธ๊ฐ ์๋๋ผ์ GetComponent ๊ณ์ด ํจ์ ์๋จ- ๋ นํ๋๊ฑฐ์ ๋์ค๋ ์๋ฌ๋ฉ์์ง ์๋ฏธ๊ฐ ์ด๊ฑฐ์. 1 ์ธ์คํํฐ์์ Audio Source๋ฅผ ๋ฐ์ธ๋ฉํ๋ค๊ณ ํด๋ Awake์์ GetComponents Audio Source ๋ฅผ ํ๋๋ฐ ์ ์ ์์ ์๊ฒ๋ ์ค๋์ค์์ค ์ปดํฌ๋ํธ๊ฐ ์์ผ๋๊น GetComponents null ๋ฐํํด์ ๋ฐฐ์ด์ ๋ฃ์ด๋ฒ๋ฆผ 2 ์ธ์คํํฐ์ Audio Clip ๋ฐ์ธ๋ฉํด๋๊ฑด Awake์์ GetComponent ํด๋ ์์ ๋งํ๋๋ก ์๋ฌ๋๋ ๋ฐฐ์ด์ ๋ญ ๋ฃ์ง ์์์. ๊ทธ๋ฅ ์ ์ค์์ ์๋ฌ ๋๊ฒ. ๊ทธ๋์ ์ธ์คํํฐ ๋ฐ์ธ๋ฉ์ด ๋จ์
GetComponent์๋ ๋ญ๊ฐ ๋ง๋ค ์์ ์ง์์ผ๋ก๋ ์๋์กฐ์ฐจ ๋ชปํ๊ฒ ๋ค.. ์ผ๋จ ์ค๋์คํด๋ฆฝ์ GetComponent ์์ ๊ณ ์ค๋์ค์์ค์ GetComponentsInChildren์ผ๋ก ๋ค์ ๋ฐ๊ฟจ์ด ๊ทธ๋ฐ๋ฐ๋ ๊ณ์ ๋๋ ํผ๋ฐ์ค ๋์ค๋ ์ด์ ๊ฐ ๋ญ์ง ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ SoundManager ์๋ชป ์ฌ์ฉํด์ ๊ทธ๋ฐ๊ฐ