๋ฐ˜์‘ํ˜•

๐ŸŽฎ 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)์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ (์”ฌ ์ด๋™ ์‹œ ์œ ์ง€ํ•  ๊ฒฝ์šฐ)

 

๋ฐ˜์‘ํ˜•