๋ฐ์ํ
๐ฎ Unity์์์ ์ฑ๊ธํค(Singleton) ํจํด
๐ ์ฑ๊ธํค์ด๋?
์ฑ๊ธํค(Singleton)์ ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ๋จ ํ๋์ ์ธ์คํด์ค๋ง ์กด์ฌํ๋๋ก ๋ณด์ฅํ๋ ๋์์ธ ํจํด์ด๋ค. ๊ฒ์์์๋ ์ฃผ๋ก ์ค๋์ค ๋งค๋์ , ๊ฒ์ ๋งค๋์ , UI ๋งค๋์ ๋ฑ ์ ์ญ์ ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ ๋งค๋์ ํด๋์ค์ ์ฌ์ฉ๋๋ค.
๐งฑ Unity์์์ ์ฑ๊ธํค ๊ตฌํ ์์: SoundManager
public class SoundManager : MonoBehaviour
{
public static SoundManager instance;
private void Awake()
{
instance = this;
}
}
์ ์ฝ๋์์ ํต์ฌ์ public static SoundManager instance์ Awake()์์์ instance = this ํ ๋น์ด๋ค. ์ด ๋ฐฉ์์ผ๋ก ์ด๋์๋ SoundManager.instance๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
๐ฏ GameManager์์๋ ์ ์ฉ๋ ์์
public class GameManager : MonoBehaviour
{
public static GameManager instance;
private void Awake()
{
instance = this;
}
}
์ด๋ ๊ฒ ์์ฑํ๋ฉด, ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์์ ๋ค์์ฒ๋ผ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค:
GameManager.instance.GameOver();
๐ง ์ ์ฌ์ฉํ๋๊ฐ?
- ์ ์ญ ์ ๊ทผ์ด ํ์ํ ๋งค๋์ ํด๋์ค์ ์ ํฉ
- ์ค๋ณต ์์ฑ ๋ฐฉ์ง๋ก ์์ ์ฑ ํฅ์
- ์ฝ๋ ๊ฐ๊ฒฐํ (FindObjectOfType ๋ฑ ๋นํจ์จ ์ ๊ฑฐ)
โ ๏ธ ์ฃผ์ํ ์
- ์ฌ์ ์ค์ง ํ๋๋ง ์กด์ฌํด์ผ ํ๋ค (์ค๋ณต ๋ฐฉ์ง ํ์)
- DontDestroyOnLoad(this)์ ํจ๊ป ์ฌ์ฉํ ์๋ ์์ (์ฌ ์ด๋ ์ ์ ์งํ ๊ฒฝ์ฐ)
๋ฐ์ํ
'C# > DesignPattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DesignPattern - ์ต์ ๋ฒ(Observer) ํจํด (0) | 2025.08.06 |
---|---|
DesignPattern - Unity์์์ Generic Singleton ํจํด (0) | 2025.07.22 |
DesignPattern - Adapter Pattern(์ด๋ํฐ ํจํด) + ์์ (1) | 2025.07.04 |
DesignPattern - Template Method Pattern(ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด) vs virtual (0) | 2025.07.03 |
Unity ๋์์ธํจํด - ์คํธ๋ํฐ์ง ํจํด(Strategy Pattern) (0) | 2023.08.17 |