0. 개요

이제 생성한 속성 메뉴를 오버레이의 버튼과 연동하여 열고 닫을 수 있도록 설정한다.

 

 

1. 속성 메뉴 열기

(1) WBP_Overlay 이벤트 그래프 수정

모든 버튼은 OnClicked 이벤트를 가지고 있다.

위젯이 생성되며 발동하는 Construct 이벤트에 버튼의 Onclicked 이벤트를 바인딩한다.


- 버튼을 사용할 때는 Get Button으로 버튼 자체를 호출하여 사용해야 한다.

Attribute Menu Button은 버튼, 오버레이, 텍스트로 구성된 위젯 블루프린트이다.


 

오버레이의 블루프린트가 복잡해지는 것을 방지하기 위해 클릭 이후의 로직은 커스텀 이벤트로 따로 만든다.

버튼이 눌리면 해당 버튼을 비활성화 하면서 위젯을 생성하여 뷰포트에 추가하는 로직이다.

 

 

(2) 버그 수정

이후 테스트를 실행하면 위젯이 화면에 꽉차게 나오는 것을 알 수 있다.

이 버그를 수정하기 위해 박스를 오버레이로 래핑한다.

 

 

2. 속성 메뉴 닫기

(1) WBP_AttributeMenu

닫기 버튼을 찾아 이름을 변경한 후 변수로 사용한다.

 

Construct 이벤트에 클릭 이벤트를 바인딩하고 Remove from Parent 노드를 사용해 위젯을 제거하도록 한다.


- UI를 표시하는 두가지 방법

개발 상황에 따라 두가지 방법 중 하나를 선택하면 된다.

(1) UI를 잠시 감추는 방법

(2) UI를 생성하고 제거하는 방법

메모리 관리의 관점에서 2번이 더 효율적이므로 이 프로젝트에서는 2번 방법을 사용한다.


 

 

 

(2) 버그 수정

이제 속성 메뉴 버튼을 클릭하고 창을 닫으면 속성 메뉴 버튼이 다시 활성화되지 않는 버그가 발생한다.

이 버그를 수정한다.

(2-1) WBP_AttributeMenu

오버레이와 속성 메뉴가 서로 종속성을 가지지 않으면서 서로의 상태를 확인하는 방법은 델리게이트-이벤트-를 사용하는 방법이 있다.


속성 메뉴에서 속성 메뉴가 닫혔음을 알려주는 델리게이트를 생성하고, 위젯이 파괴될 때 호출되는 Destruct 이벤트를 사용하여 해당 이벤트를 호출하자.

 

 

(2) WBP_Overlay

이제 델리게이트에 이벤트를 바인딩한다.

커스텀 이벤트를 통해 버튼을 다시 Enabled로 지정한다.