์ผ๋จ ๊ฐ๋จํ๊ฒ๋๋ง ๋๋์ง๊ฐ ๊ฐ๊ฐ ์ฌ๋ผ๊ฐ๋์ค, ์ฌ๋ผ์์๋ ์ํ, ๋ด๋ ค๊ฐ๋ ์ค ์๊ฑฐ 3๊ฐ๋ง ์ผ๋จ ํด๋ณด๊ณ ์ถ๊ฐํด๋ณด๊ธฐ๋ก ํ๋๋ฐ
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; ย ย // ๋ช ๋ฒ์งธ ์๋์ง์ ๋ฐ๋ฅธ ์ธ๋ฑ์ค๊ฐ
ย ย 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;
ย ย }
}
์ฌ์ด๋ ๊ด๋ จํด์๋ ๊ทธ๋ฅ ์ ํ๋ธ ๋ฐ๋ผ ์ผ๊ณ , ์ ํ๋ธ ๋ฐ๋ผ ์จ์ย cursor = (cursor + 1) % DdgSFX.Length;ย ์ด๊ฑฐ ์ ํ๋์ง ์์ง ์ดํด ๋ชปํจ..
๊ทธ๋์ ์ด๊ฑธ ๋๋์ง ๊ด๋ฆฌํ๋ ์คํฌ๋ฆฝํธ์ ๋ฃ์๋๋
using System.Collections;
using UnityEngine;
public class Spawn : MonoBehaviour
{
ย ย [SerializeField]
ย ย private MoleSFM[] moles;
ย ย public SoundManager sm;
ย ย private void Awake()
ย ย {
ย ย ย ย sm = GetComponent<SoundManager>();
ย ย }
ย ย private void Update() {
ย ย ย ย // 0๋ฒ ์์ชฝ ๋์ฅ์ ๋ํ ์ฝ๋
ย ย ย ย if (Input.GetKey(KeyCode.UpArrow)) {
ย ย ย ย ย ย moles[0].ChangeState(MoleState.MoveUp);
ย ย ย ย ย ย sm.DdgPlaySound(SoundManager.Ddg.MoveUp);
ย ย ย ย ย ย // ์ฌ๋ผ์จ ๋์ ์ ์๊ณ์ฐ
ย ย ย ย ย ย if (moles[0].MoleState == MoleState.OnGround) {
ย ย ย ย ย ย ย ย sm.DdgPlaySound(SoundManager.Ddg.MoveUp);
ย ย ย ย ย ย ย ย ScoreResult.plusScore(true);
ย ย ย ย ย ย }
ย ย ย ย // 1๋ฒ ๋์ฅ์ ๋ํ ์ฝ๋
ย ย ย ย } else if (Input.GetKey(KeyCode.DownArrow)) {
ย ย ย ย ย ย moles[1].ChangeState(MoleState.MoveUp);
ย ย ย ย ย ย sm.DdgPlaySound(SoundManager.Ddg.MoveUp);
ย ย ย ย ย ย // ์ฌ๋ผ์จ ๋์ ์ ์๊ณ์ฐ
ย ย ย ย ย ย if (moles[1].MoleState == MoleState.OnGround) {
ย ย ย ย ย ย ย ย sm.DdgPlaySound(SoundManager.Ddg.OnGround);
ย ย ย ย ย ย ย ย ScoreResult.plusScore(true);
ย ย ย ย ย ย }
์ด๋ ๊ฒ ๊ทธ ๋ฐ์ผ๋ก ๊ณ์ ๋ฐ๋ณต์ฝ๋๊ฐ ์๋๋ฐ ๋ฌธ์ ๋ ์ด๋ ๊ฒ ํ๊ณ ์คํ์ ์ํค๋๊น
๋๊ฐ์ด๋ผ๊ณ ๋ฌ๋ค
๋ง์ ๊บพ์ผ ๊ฑฐ ๊ฐ๋ค.. ์ด๊ฑฐ ์ ์ด๋ฌ๋๊ฑฐ์ผ...
SFX๊ฐ ์ค๋์คํด๋ฆฝ ๋ฐฐ์ด์ธ๋ฐ ์ ์ธ ์ํด์ ๊ทธ๋ฐ๊ฑฐ ๊ฐ์
์ค๋์คํด๋ฆฝ ๋ฐฐ์ด ์์ ์๋ฆฌ ๋ค ๋ฃ์๋๋ฐ ์ด๋ค ๊ฑธ ๋งํ๋๊ฑฐ์ผ
DdgSFX = GetComponents(); ์ถ๊ฐํด๋ ๊ทธ๋๋ก์ผ..
๋ฐฐ์ด ์ด๊ธฐํ
์๋๊ฐ ์ง๋ ฌํ ํ๋ฉด ๊ด์ฐฎ๋๊ฐ
MoleSFM ๋งํ๋๊ฑฐ์ผ? ์ ๊ฑด ๋ฌธ์ ์์ด
๋ฐฐ์ด ๊ฐ์ ์ ์ธ ์ํด์ค์ ์ ๋ค์ด๊ฐ๋๋ณธ๋ฐ DdgSFX, DdgClip
moles ๋
moles๋ ์ค๋ฅ ์์ด ์๋ํ๊ณ ์์ด
moles ๋ฐฐ์ด ๊ธธ์ด ์ ์ธ์ด ์๋๋ฐ ๋์ํ๋ค๊ณ ? ๊ทธ๋ผ ์ต์คํํฐ์์ ๊ฐ ๋ฃ์ด์ ์ฐ๊ณ ์๋๊ฑธํ ๋ฐ ๊ทธ๋ผ ์ฌ์ด๋๋งค๋์ ๋ ๊ทธ๋ ๊ฒ ์ฐ๋๊ฐ
๋ฐฐ์ด์ ๊ธธ์ด์ ์ธ ์ํด์ฃผ๋ฉด ๋ฌด์กฐ๊ฑด ๋ ๋จ๋๋ฐ ์ค๋ค ์๋ง๋ด๋ ๊ทธ ๋ฌธ์ ๊ฑฐ ๊ฐ์๋ฐ
์ด์ํ๋ค ์ฌ์ด๋๋งค๋์ ์์๋ ์ต์คํํฐ์ ๊ฐ์ ๊ฐ ๋ฐฐ์ด๋น 4๊ฐ์ฉ ๋ฃ์๋๋ฐ ์ ์ค๋์ค๋ง ์ด๋ฌ์ง..
์ฌ์ด๋๋งค๋์ ๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๋์ง๋ ๋ด์ผ์ง ํผ๋ธ๋ฆญ์์ ๊ณต๊ฐ์ ์ค๋ ์ค์ ์คํ๋๋ฉด์ ๊ณต๊ฐ ์ด๊ธฐํ ๋๋ฒ๋ฆฌ๋ฉด ๋ค์ด๊ฐ๋ฐ ์์ด์ null๋๋๊น ํ๋ ์ด ํด๋ณธํ์ ์ฌ์ด๋๋งค๋์ ๋ค์ ํ์ธํด๋ด.
์ด ์ง์ง๋ค ๊ฒ์ ์์ํ๋ฉด ์ค๋์ค์์ค ๋ถ๋ถ์ ๋ฃ์ด๋จ๋๊ฒ ์์ด์ ธ ์์ด๋ ์ด๊ฑฐ
22๋ฒ์งธ์ค์ด๋ผ๊ณ ๋์์์์
์ ๊ฑฐ ์ค๋์ค ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ๊ฐ ์๋๊ณ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ์ค๋์ค ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ ์คํํ๊ณ ์์ ๋ ์ค๋ฅ๊ฐ 22์ค์์ ๋๋๊ฑฐ์
์ ๊ฑฐ ๋๋ฌ๋ณด๋ฉด ํธ์ถ์คํ๋ ๋์