콜백 매서드를 정의하고, 매서드를 대신 호출.
매서드를 매개변수로 전달 가능
UserInfo.myinfo.SetGoldEvent(currencyGold.SetText);
public void SetGoldEvent(SetGold action)
{
setGold += action;
setGold.Invoke(gold);
}
작업 실행을 알리기 위해 보내는 메세지
구독자에게 작업을 전달(옵저버)
키워드를 통해 클래스 내 필드처럼 정의
제네릭으로 사용할 수 있게 유니티에서 제공해주는 delegate event
show를 해서 파라미터 가져옴
초기화에 필요한 데이터를 받고 시작
UIManager.instance.Show<UIShop>(0); // 0번째가 켜짐
UIManager.instance.Show<UISHop>(1); // 1번째가 켜짐
private void Awake()
{
Instance = this;
userInfo = new UserInfo();
Init(StartGame);
Init(ReadyGame);
}
public void StartGame()
{
Debug.Log("게임시작");
}
public void ReadyGame()
{
Debug.Log("준비");
}
public void Init(UnityAction callback)
{
userInfo = new UserInfo();
userInfo.name = "스파르타";
userInfo.level = 1;
callback.Invoke();
StartCoroutine(SendRequest(ReqEnd));
}
public void ReqEnd()
{
Debug.Log("request End");
}
public IEnumerator SendRequest(UnityAction callback)
{
UnityWebRequest req = new UnityWebRequest("https://");
yield return req.SendWebRequest();
Debug.Log("WaitEnd");
callback.Invoke();
}
//waitEnd
//request End
unity action : 통신에서 많이 사용됨
특강에 나온 event, delegate, UnityAction을 통해 매개 변수로 함수를 넘겨주는 방식이 굉장히 인상깊었고 이번 최종 프로젝트 때 꼭 활용해봐야겠다는 생각이 들었다. 이번 프로젝트에서는 UI를 중점적으로 하진 않겠지만 내가 다룰 내용들이 UI를 업데이트 시켜주는 작업이 꼭 필요하기 때문에 특강으로 배운 내용을 잘 기억해두자.