UnityEvent 를 이용해서 subscribe 하고 Invoke를 통해서 모든 구독한 메서드들을 실행시키는 형태의 코드 .
public UnityEvent onOpen;
public UnityEvent onClose;

위와 같은 형태로 UnityEvent 로 선언된 onOpen, onClose 등이 있을때, 

 

        public void Close()
        {
            onClose.Invoke();
            if (parentScene != null)
            {
                parentScene.ClosePopup();
            }
            if (animator != null)
            {
                animator.Play("Close");
                StartCoroutine(DestroyPopup());
            }
            else
            {
                Destroy(gameObject);
            }
        }

 

이와 같은 형태로 onClose.Invoke();  처럼 Invoke() 를 통해서 해당 이벤트를 subscribe 한 메서드들을 실행시킬 수 있다. 

 

이와 관련된 gpt 참고 내용을 첨부한다. 

`Invoke()` 함수는 C#에서 메소드나 대리자(Delegate)를 호출하는 데 사용되는 메서드입니다. 

여기서 `onClose`는 아마도 이벤트나 델리게이트로 정의된 변수일 것입니다. 이렇게 정의된 
델리게이트나 이벤트는 다른 부분에서 구독(subscribe)되어 해당 이벤트가 발생할 때 실행될 
메서드를 추가할 수 있습니다.

`onClose.Invoke()`는 등록된 모든 메서드를 호출하는 것입니다. 이렇게 하는 이유는 해당 
이벤트나 델리게이트에 등록된 모든 메서드가 이벤트 발생 시 실행되도록 하기 위함입니다. 
즉, `onClose` 이벤트에 연결된 다양한 메서드들이 있을 것이고, `Invoke()`를 통해 한 번에 
모든 메서드를 실행시키는 것입니다.

이렇게 하면 `Close` 메서드가 실행될 때, `onClose` 이벤트에 등록된 모든 메서드가 
실행되고, 그 후에 다음 로직이 실행됩니다. 이렇게 이벤트를 통해 외부에서 로직을 추가할 수 있게 
되므로, 코드의 유연성과 확장성을 높일 수 있습니다.
  Comments,     Trackbacks