Unity/유니티 개발
[유니티 C#] Delegate 이벤트 예제(feat.Singleton)
도이(doi)
2021. 9. 30. 17:53
728x90
델리게이트를 사용하면 만든 함수를 한 군데에 집어넣어서 관리할 수 있다.
Event는 다른 클래스에서 Delegate로 함수를 관리 감독하는 것을 가능하도록 만들어준다.
Delegate1은 싱글톤으로 생성하여 다른 클래스에서 접근하기 용이하도록 만들었다.
-> Instance 프로퍼티를 이용해서 바로 접근 가능하다.
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
반응형