Life is Game๐ŸŽฎ

์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์„ ์“ฐ๋Š” ์ด์œ 

ํ—ค์Šค๋” 2025. 4. 3. 19:11

์œ ๋‹ˆํ‹ฐ ์—”์ง„ ๋‚ด์˜ ์ธ์ŠคํŽ™ํ„ฐ ์ฐฝ์—์„œ event๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชฉ๋ก์ด ๋œฌ๋‹ค.

 

์˜ค๋Š˜์€ ์œ ๋‹ˆํ‹ฐ์—์„œ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์ด ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ ์™œ ์“ฐ๋Š”์ง€์— ๋Œ€ํ•ด ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

 

 

1. ์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์ด๋ž€

์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์€ ํŠน์ • ์‚ฌ๊ฑด์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฅผ ๋ฏธ๋ฆฌ ๋“ฑ๋ก๋œ ๊ฐ์ฒด๋“ค์—๊ฒŒ ์•Œ๋ฆผ์œผ๋กœ์จ ๊ฐ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

์ตœ๊ทผ ์œ ๋‹ˆํ‹ฐ๋กœ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉฐ ์ž์ฃผ ๋งž๋‹ฅ๋œจ๋ฆฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ์ฒด ๊ฐ„ ์ฐธ์กฐ ๊ด€๋ฆฌ์˜€๋‹ค. ํŠนํžˆ, ํ•œ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐ˜์‘ํ•ด์•ผ ํ•  ๋•Œ, ์ฐธ์กฐ๋ฅผ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜๋‹ค ๋ณด๋ฉด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ์—ฐ๋‹ฌ์•„ ๋‹ค๋ฅธ ์ฝ”๋“œ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ผ๋ก€๋กœ, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ์„ ๊ณต๊ฒฉํ•  ๋•Œ๋งˆ๋‹ค UI์˜ ์ ์ˆ˜ ์‹œ์Šคํ…œ์ด ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ง์ ‘ ์ฐธ์กฐ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ ธ ํ•œ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ˆ˜์ •์„ ํ–ˆ์„ ๋•Œ ํ•จ๊ป˜ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๊ฑฐ๋ฏธ์ค„์น˜๊ธฐ์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ์žกํ•จ, ๋ง๊ทธ๋Œ€๋กœ  ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ƒํƒœ๊ฐ€ ๋˜๋ฒ„๋ ค์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฆฌ์…‹ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ ๊ณ ๋ฏผํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ฐธ์กฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์œ ๋‹ˆํ‹ฐ์˜ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์ด๋‹ค. ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜๋ฉด ๊ฐ์ฒด ๊ฐ„ ์ง์ ‘์ ์ธ ์ฐธ์กฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ๋„ ์ƒํ˜ธ์ž‘์šฉ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค:

  1. UnityEvent (์ธ์ŠคํŽ™ํ„ฐ ๊ธฐ๋ฐ˜): ์œ ๋‹ˆํ‹ฐ ์—๋””ํ„ฐ ๋‚ด ์ธ์ŠคํŽ™ํ„ฐ ์ฐฝ์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์ด๋‹ค.
  2. C# Delegate์™€ Event (์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜): ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ์ฝ”๋“œ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.

 

 

 

2. ์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•œ ์ฐธ์กฐ ๋ฌธ์ œ ํ•ด๊ฒฐ

UnityEvent๋Š” ์ธ์ŠคํŽ™ํ„ฐ ์ฐฝ์„ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ ์†์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด, ๊ฐ„๋‹จํ•œ ์ƒํ˜ธ์ž‘์šฉ ๊ตฌํ˜„์— ์œ ๋ฆฌํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ์„ ์ฒ˜์น˜ํ–ˆ์„ ๋•Œ ์ ์ˆ˜ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋กœ์ง์„ UnityEvent๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

using UnityEngine;
using UnityEngine.Events;

public class Enemy : MonoBehaviour
{
    public UnityEvent OnEnemyDefeated;

    public void Defeat()
    {
        OnEnemyDefeated.Invoke();
        Destroy(gameObject);
    }
}

์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์  ์บ๋ฆญํ„ฐ์— ๋ถ™์ด๊ณ , ์ธ์ŠคํŽ™ํ„ฐ์—์„œ OnEnemyDefeated ์ด๋ฒคํŠธ์— ์ ์ˆ˜ ์ฆ๊ฐ€ ํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด, ๋ณ„๋„์˜ ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ์ ์ˆ˜ ์‹œ์Šคํ…œ์ด ๋ฐ˜์‘ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

 

3. Delegate์™€ Event๋ฅผ ํ™œ์šฉํ•œ ์ฐธ์กฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ์‚ฌ๋ก€

Delegate์™€ Event๋Š” ๋ณต์žกํ•œ ๋กœ์ง์ด๋‚˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ์š”๊ตฌ๋˜๋Š” ์ƒํ™ฉ์—์„œ ํŠนํžˆ ์œ ์šฉํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ์—๊ฒŒ ๊ณต๊ฒฉ์„ ๊ฐ€ํ•  ๋•Œ ์ ์ˆ˜ ์‹œ์Šคํ…œ์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ ์ˆ˜๋ฅผ ๋ฐ˜์˜ํ•˜๋„๋ก ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

using UnityEngine;

public class PlayerAttack : MonoBehaviour
{
    public delegate void ScoreEvent(int scoreDelta);
    public static event ScoreEvent OnScoreGained;

    public void AttackEnemy(Enemy enemy)
    {
        enemy.Defeat();
        OnScoreGained?.Invoke(100);
    }
}

public class ScoreManager : MonoBehaviour
{
    int currentScore = 0;

    void OnEnable()
    {
        PlayerAttack.OnScoreGained += AddScore;
    }

    void OnDisable()
    {
        PlayerAttack.OnScoreGained -= AddScore;
    }

    void AddScore(int scoreDelta)
    {
        currentScore += scoreDelta;
        Debug.Log("ํ˜„์žฌ ์ ์ˆ˜: " + currentScore);
    }
}

์ด์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜๋ฉด ScoreManager๋Š” PlayerAttack์„ ์ง์ ‘ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ ๋„ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์ ์ˆ˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์ ์ˆ˜ ์‹œ์Šคํ…œ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

 

 

 

4. ์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์„ ์“ฐ๋ฉด ์ข‹์€ ์ 

  • ๊ฐ์ฒด ๊ฐ„ ์ง์ ‘ ์ฐธ์กฐ ์ตœ์†Œํ™”๋กœ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง„๋‹ค.
  • ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ ธ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
  • ๋ณต์žกํ•œ ๊ฐ์ฒด ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ ๋กœ์ง์„ ์ง๊ด€์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ ๋‹ˆํ‹ฐ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๊ฐ์ฒด ์ฐธ์กฐ๋กœ ์ธํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•ด๋ณด๋ฉด ์ข‹์€ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.