델리게이트 활용법, 액션 콜백형식

2024. 11. 14. 20:43카테고리 없음

1. 델리게이트 사용하면 좋을때

같은 오브젝트 내에서 메서드를 호출할 때는 GetComponent나 Inspector 연결이 더 효율적이고, 여러 클래스에서 메서드를 호출해야 할 때 델리게이트가 유용합니다. 주로 UI 갱신, 걷기 시 사운드와 애니메이션 동시 실행등에서 사용됩니다.

2. UnityEvent와 UnityAction ( UnityAction보다 Action사용을 권장함 )

버튼 컴퍼넌트에 있는 OnClick에서 추가해 주는것도 액션이벤트이다.

이거를 코드로 만드는 방법은

public UnityEvent Myevent;

이렇게 변수를 만들면 스크립트인데도 이렇게 만들 수 있다.

 

애초에 Button컴퍼넌트를 담은 변수에 onClick해서 들어가보면 UnityEvent로 되어있다.

위에 작성한 코드랑 똑같은거다.

 

그럼 위에 작성한 코드처럼 작성을 했을때 사용방법은 + 가 아닌 AddListener을 사용해서 해야한다. 이때 괄호안에 들어가는 값은 UnityAction 형태로 해줘야지 들어가진다. 그냥 Action은 안들어가진다. UnityAction도 Action과 똑같이 사용하면 된다.

하지만 UnityAction을 사용하는걸 추천하지는 않는다. 나중에 협업할떄 디자이너분들이 설정해줘야할때 간단하게 설정 할수 있게끔 만드는 것이다.

public UnityEvent Myevent;

void Start()
{
    Myevent.AddListener(Text);
}

void Text()
{
    
}

 

3. 액션 콜백형식

함수의 매개변수에 Action 을 받아서 해당 함수가 끝나면 Action에 넣은 메서드를 뒤이어서 실행하게끔 만드는거다.

함수말고 코루틴을 사용하면 더 자연스럽게 연결할 수 있다.

코드

void Start()
{
    Text(Over);
}

void Over()
{
    
}

void Text(Action callback)
{
    callback?.Invoke();
}