관리 메뉴

caLAB

[유니티 C#] Delegate 이벤트 예제(feat.Singleton) 본문

Unity/유니티 개발

[유니티 C#] Delegate 이벤트 예제(feat.Singleton)

도이(doi) 2021. 9. 30. 17:53
728x90

델리게이트를 사용하면 만든 함수를 한 군데에 집어넣어서 관리할 수 있다. 

Event는 다른 클래스에서 Delegate로 함수를 관리 감독하는 것을 가능하도록 만들어준다.

Delegate1은 싱글톤으로 생성하여 다른 클래스에서 접근하기 용이하도록 만들었다.
-> Instance 프로퍼티를 이용해서 바로 접근 가능하다.

결과 Console

using UnityEngine;

public class Delegate1 : MonoBehaviour
{
    private static Delegate1 _instance;
    public static Delegate1 Instance { get { return _instance; } }

    public delegate void onMsgDele(int value);
    public event onMsgDele onMessage;

    private void Awake()
    {
        if(_instance == null)
        {
            _instance = this;
        }
    }

    private void Start()
    {
        onMessage += message1;
        onMessage += message2;
        
        if (onMessage != null)
        {
            onMessage(5);
        }
    }

    private void message1(int value)
    {
        print("Delegate1 : this is a message1" + value);
    }
    private void message2(int value)
    {
        print("Delegate1 : this is a message2" + value);
    }
}
using UnityEngine;

public class Delegate2 : MonoBehaviour
{
    private void Start()
    {
        Delegate1.Instance.onMessage += message3;
    }

    private void message3(int value)
    {
        if(value == 5)
        {
            print("Delegate2 : this is a value 5.");
        }
        else
        {
            print("Delegate2 : this is not a value 5.");
        }
    }
}
728x90
반응형
Comments