내일배움캠프 50일차 TIL - delegate, event, UnityAction

권태하·2024년 6월 27일
0
post-thumbnail

delegate(대리자)

콜백 매서드를 정의하고, 매서드를 대신 호출.
매서드를 매개변수로 전달 가능

함수를 매개변수로 활용

UserInfo.myinfo.SetGoldEvent(currencyGold.SetText);

public void SetGoldEvent(SetGold action)
{
	setGold += action;
    setGold.Invoke(gold);
}

event

작업 실행을 알리기 위해 보내는 메세지
구독자에게 작업을 전달(옵저버)
키워드를 통해 클래스 내 필드처럼 정의

UnityAction

제네릭으로 사용할 수 있게 유니티에서 제공해주는 delegate event

사용 예

세터에 등록을 하며 바로 이벤트를 Invoke시켜주는 형태

열릴 때 마다 초기화 되는 방식으로 액션 구현

액션에 오브젝트 배열을 넣는 이유


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를 업데이트 시켜주는 작업이 꼭 필요하기 때문에 특강으로 배운 내용을 잘 기억해두자.

profile
스터디 로그

0개의 댓글

관련 채용 정보