
ํ๋ก์ ํธ ํ๋ค ๋ณด๋ฉด ๋งค๋์ ์คํฌ๋ฆฝํธ(GameManager, SoundManager, UIManager)๋ฅผ ์ฌ๊ธฐ์ ๊ธฐ์ ๋ถ๋ฌ์ผ ํ ๋๊ฐ ๋ง๋ค.
๊ตฌ์กฐ๋ฅผ ์ ์ง์ ์ฒ ์ ํ ๊ด๋ฆฌํด์ฃผ๋ ๊ฒ ๋ฒ ์คํธ๊ธด ํ๋ฐ, ๋ง์ ๋ง๋ค๋ค ๋ณด๋ฉด ์ฌ์ ํ๋ ๋๊ณ ๋ ํผ๋ฐ์ค ๋ฌผ๋ ค์ ์ฐ๋ค๊ฐ BGM์ด ๋ ๋ฒ ์ฌ์๋๋ค๋ ์ง, ๋ฐ์ดํฐ๊ฐ ์ด๊ธฐํ๋๋ค๋ ์ง ๊ฐ์ ์ฌ๊ณ ๊ฐ ํฐ์ง๋ค.
์ด๋ ๋น๊ต์ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ฑ๊ธํค(Singleton) ํจํด์ด๋ค.
ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์ค์ง ํ๋๋ง ์์ฑ๋๋๋ก ๋ณด์ฅํ๊ณ , ์ด ์ธ์คํด์ค์ ๋ํ ์ ์ญ์ ์ธ ์ ๊ทผ ์ง์ ์ ์ ๊ณตํ๋ ์์ฑ ๋์์ธ ํจํด
์ด์ง๋ง ๋น์ ๋ก ํํํ์๋ฉด ์์ด์์ โ์ ์ผํ ๊ฒ / ๋๊ตฌ๋ ๊ฐ์ ๊ฑธ ๋ ์ฌ๋ฆฌ๋ ๊ฒโ์ the๋ฅผ ๋ถ์ด๋ฏ์ด ๊ทธ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ ๋ฅผ ์ฑ๊ธํค์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์ฆ
ํ๋ค๋ ๊ฒ์ด๋ค(์ ์ญ ์ค๋ธ์ ํธ).
์ผ๋ฐ์ ์ธ ์ฑ๊ธํค ๊ตฌํ์ ๋ณดํต
์์ฑ์๋ฅผ ์ธ๋ถ์์ ๋ชป ๋ถ๋ฅด๊ฒ ๋ง๊ณ (private constructor)
ํด๋์ค ๋ด๋ถ์ ์ ์ (static) ์ธ์คํด์ค๋ฅผ ๋ค๊ณ ์๋ค๊ฐ
ํ์ํ ๋ ์์ฑํด ๋ฐํํ๋ ๋ฐฉ์
public class Singleton
{
private static Singleton _instance;
public static Singleton Instance
{
get
{
if (_instance == null)
_instance = new Singleton();
return _instance;
}
}
private Singleton() { }
}
๋ณดํต ์ฑ๋ด ์ค์ ์ ๋ณด๋ ์ ์ญ ์ํ ๊ด๋ฆฌ, ์ฌ๋ฌ ๊ณณ์์ ๋์ผํ ์์์ ์ ๊ทผํ์ฌ ๊ณต์ ํด์ผ ํ ๋(์บ์, ๋ก๊ฑฐ)์์ ์ฌ์ฉํ๊ณ ์์ฑ ๋น์ฉ์ด ํฐ ๊ฐ์ฒด๋ฅผ ํ๋ฒ๋ง ์์ฑํ์ฌ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
์ ๋ํฐ์์๋ ์๋ ์ฝ๋์ ๊ฐ์ด ์ธํ ํ๋ค.
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
public int num=0;
void Awake()
{
// ์ฑ๊ธํค ์
์
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
// ์ฌ ์ ํํด๋ ์ ์ง
DontDestroyOnLoad(gameObject);
}
public void plus(int n)//ํธ์ถํ ํจ์
{
num+=n;
}
}
์ดํ ์ ๊ทผ์ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ GameManager.Instance.plus(1);
์ด๋ฐ์์ผ๋ก ์ ๊ทผํ๋ฉด ๋๋ค.
๋ฐ๋ก ์์๋ฐ๊ฑฐ๋ importํ์ง ์์๋ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
์ฃผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์์ ๋งํ๋ ๋งค๋์ ์คํฌ๋ฆฝํธ์ ์์ ์ฌ์ฉํ๋ค.
์ฐ์ ์ฅ์ ์ผ๋ก๋
๋ ๋งค๋ฒ์ ์๋์ง๋ง ๋น์ผ ๋น์ฉ์ ์ค๋ธ์ ํธ๋ฅผ ํ๋ฒ๋ง ์ด๊ธฐํ ํ๊ณ ๋ ์์ฑ ์ญ์ ์ฃผ๊ธฐ๋ฅผ ์์ ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ํฅ์๋๋ ๊ฒฝ์ฐ๋ ์๋ค.
ํ์ง๋ง ์ฝ๋ค๊ณ ๊ทธ๋ฌ์ง ์ต์ ์ ๋ฐฉ๋ฒ์ด ์๋๋ผ๊ณ ํ ์ด์ ๋
๋ฌผ๋ก ์ ์ญ์ผ๋ก ์ค๋ ์ด์์ ๋ฉ๋ชจ๋ฆฌ ์ ์ ๊ฐ ๋์๋ ์๊ณ ์ด๊ธฐํ/๋ก๋ฉ์ ํ ํ๋ ์์ ๋ชฐ์์ ์คํ๋ ค ์๊ฐ ํ๋ ์ ๋๋์ ๋ง๋ค ์๋์์ด ์ฑ๋ฅ์ ์ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ฑ๊ธํค ํจํด์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ ๊ดํด ๋ถ์ ์ ์ธ ์ฌ๋ก ์ด ์ข ์๋ ๊ฒ ๊ฐ์ง๋ง
๊ฐ๋จํ ๊ฒ์์์๋ ํฌ๊ฒ ๋ฌธ์ ๋ ๊ฑด ์๊ณ
์ฌ์ค GameManager๋ฅผ ๊ตฌํํ๋๋ฐ ๊ฐ์ฅ ์ง๊ด์ ์ด๊ณ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ
์ ๋นํ ์ ์จ๋จน์