Unity. UnityEvent ์‚ฌ์šฉํ•˜๊ธฐ

์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

๐ŸŒŸ UnityEvent๋ž€?

UnityEvent๋Š” ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ Unity์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ C#์—๋Š” ์—†๊ณ  Unity์—๋งŒ ์กด์žฌํ•œ๋‹ค.

๐ŸŒŸ ์‚ฌ์šฉ๋ฒ•

public class ExampleClass : MonoBehaviour
{
    UnityEvent m_MyEvent;

    void Start()
    {
        if (m_MyEvent == null)
            m_MyEvent = new UnityEvent();

        m_MyEvent.AddListener(Ping); //UnityEvent์— ํ•จ์ˆ˜ ์ถ”๊ฐ€
    }

    void Update()
    {
        if (Input.anyKeyDown && m_MyEvent != null)
        {
            m_MyEvent.Invoke(); //UnityEvent ํ˜ธ์ถœ
        }
    }

    void Ping()
    {
        Debug.Log("Ping");
    }
}

์œ„ ์ฝ”๋“œ๋Š” ์œ ๋‹ˆํ‹ฐ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๊ฐ€์ ธ์˜ด!

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ AddListener๋กœ ์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ์— ํ•„์š”ํ•œ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ , Invoke๋กœ ์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ถ”๊ฐ€ํ•œ ํ•จ์ˆ˜๋ฅผ ์ง€์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด RemoveListener๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์œ ๋‹ˆํ‹ฐ ์ด๋ฒคํŠธ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋™์ผํ•œ ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํ•˜๋‚˜๋งŒ ์ฝœ๋ฐฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋“ฑ๋กํ•œ ํ•จ์ˆ˜๋Š” 4๊ฐœ์˜ ์ธ์ž๊นŒ์ง€๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ