안녕하세요 '언리얼로 만들어보는 RPG'의 필자입니다. 저번글에 이어서 오늘은 스킬창 UI를 마무리 하고 퀵슬록에 등록해서 사용하기 위해 Drag&Drop 작업을 할 예정입니다.
SkillTree.h
SkillTree에서는 크게 해줄일은 없고 SkillSlot을 담아주기만 하면 됩니다. 현재 플레이어에게 스킬포인트가 얼마나 남았는지 보여주는것 정도만 해주면 SkillTree는 자신의 할일을 다 했다 보시면 됩니다. SkillPointChanged함수는 스킬을 투자하고나서 갱신해주는 용도의 함수입니다. 이걸 각 버튼에 delegate로 연결시킬 예정입니다.
SkillTree.cpp
초기화에서는 다른 UI들과 마찬가지로 Player포인터를 대입해주고 해당 UI의 Init함수를 불러줍니다. 그리고 아까 언급한것처럼 SkillSlot이 가지고있는 버튼 두개에 delegate로 SkillPointChanged함수를 연결해줍니다. 해당함수는 버튼이 작동할때마다 UI상에서 남은 SkillPoint를 갱신해서 보여줄 것입니다.
보시면 뭔가 이상한점을 하나 느끼실 수 있는데 SkillPoint라는 변수를 선언한 기억이 없으실 겁니다. 네 필자가 실수를한 것 같군요. int형으로 SkillPoint라는 변수를 하나 만들어 주시면 됩니다.
SkillTree(UMG에디터)
GameUI.h
GameUI.cpp
이정도면 UI는 준비가 다 됐습니다. 이제 Drag&Drop 처리를 해보러 가도록 하지요.
SlotDrag.cpp
Drop당시 Drag를 시작한 슬롯의 타입이 Skill이거나 Q_Skill인 경우에 대한부분을 추가해줍니다.
SlotDrag.cpp
불필요한 중복코드가 좀 있는 것 같기는 하지만 정상적으로 작동하니 우선은 냅둡니다. 일단 돌아가게 만들면 나중에 수정해서 해결하면 되는것이니까요!
SlotDrag.cpp
이번글을 작성하면서 불필요했던 중복코드를 좀 정리하게 되었습니다. 역시 작업한걸 다시한번 보고 천천히 정리하면 해결할 방법을 찾게되는거 같습니다. 여기도 마찬가지로 슬롯의 Type이 Q_Skill인경우에 대한것만 추가해주면 별로 달라질것은 없습니다.
저번글로부터 텀이 꽤 길었던것 같은데 요즘따라 개인적인 일이 생겨서 집중할 시간이 부족하다보니 생기는 문제인것 같습니다. 너그럽게 이해해주시면 감사드리고 다음글을 마지막으로 Skill은 마무리가 될것 같습니다. 이번글은 여기까지 마무리하고 다음글에서 다시 찾아뵙겠습니다.
'프로그래밍 > 언리얼' 카테고리의 다른 글
언리얼로 만들어보는 RPG - AI(1) (0) | 2020.07.05 |
---|---|
언리얼로 만들어보는 RPG - 스킬창 구현(3) (0) | 2019.04.10 |
언리얼로 만들어보는 RPG - 스킬창 구현(1) (0) | 2019.03.27 |
언리얼로 만들어보는 RPG - 장비창 구현(2) (0) | 2019.03.07 |
언리얼로 만들어보는 RPG - 장비창 구현(1) (0) | 2019.03.06 |