어으 코로나 걸려서 한동안 정신 못차리고 있다가 이제 몸 괜찮아져서 다시 개발하는중
이번에 특성 시스템을 아예 새로 만들고 있던 도중 아주 약간 당황했던 UI 구조에 대해 알게됐음
특성을 화면에 3개 뿌릴 때 빨간색 상자처럼 Child Widget을 만들어서 뿌려주도록 구현했음
원하는 특성을 누르면 이 부모 UI가 닫혀야 하는데 닫히질 않는거임
심지어 언리얼에는 GetParent 라는 함수가 존재해서 나는 이걸로 가져오면 그냥 되는줄 알았음 근데 몇번 해보니 안돼서 바로 구글링 때림
아니나 다를까 이 문제가 이미 포럼에 잘 나와있더라고
결론은 GetParent는 실제로 나를 감싸고 있는 놈을 가져오는거라 실질적인 부모 UI를 가져오는게 아니였음
부모를 없애고 싶으면 최상단 놈을 가져와야 했던거지
그래서 그냥 부모 찾을 때까지 열심히 탐색하게 만들어버렸음
귀찮아서 라이브러리화 안했는데 담에 또 쓸 일 있으면 그때 해야지
음.. UI를 열 때마다 큐에 담고 특정 조건이 충족되면 가장 첫번째 요소를 호출해서 끄는 방식은 별론감
계층구조가 많으면 그렇게 해도 될듯
뉴비질문: 1번 화면에 있는 컴포넌트 트리랑 실제 인게임에서 ui 위젯들이 1:1 대응이 안되는거야? 실제로는 컴포넌트 트리 하나가 여러겹의 ui위젯인거고 그래서 UserWidget을 따로 찾아야하는가
UserWidget이랑 하이어라키에서 보여주는 UI요소들은 서로 다른 클래스로 선언되어 있음. UserWidget 자체를 없애기 위해 따로 찾아준거야
이거보고 언리얼 개같이 포기함
Bpfunctionlibrary로 getparentbyclass같은거 만들어서인자로 클래스받고 재귀돌리면 범용적으로 사용가능할듯 확실하진않은데 비슷한거 commonui에서 본거같음
UI는 HUD에 상속시켜쓰는게 편함 hud같은경우는 전역에서 초기화시키가 편하거든 언리얼에서 권장하는 코딩방식
아직 UI 공부중이라 잘 모르지만 어떤 사람은 HUD가 레거시라 안써도 된다하고 어떤 사람은 HUD 로 관리하는게 편하다하고 그래서 시간되면 Lyra 한번 뜯어보려고 알려줘서 고마워
난 그냥 걍 위젯에 올려놓고 필요할 때마다 SetVisibility로 Visible, Hidden 하는데 이상한건가?
나도 그렇게 하는 위젯들이 있긴한데 Canvas Panel 쓰는 애들은 최적화 때문에라도 지워줄 땐 확실하게 지워주는편