[UE5] 스킬 UI

seunghyun·2024년 5월 6일
0

ProjectGO

목록 보기
3/7

결과화면

(추가) 스펠 3개 적용 후스펠 3개 적용 전, 스킬 쿨타임, 스킬 마나 정보 출력


요구사항

리그오브레전드 게임처럼 스킬 쿨타임이 돌아가고,

현재 캐릭터가 소유한 마나가 특정 스킬의 마나 비용보다 적다면, 물방울 이미지의 UI를 띄워서 스킬을 사용할 수 없다는 걸 표시하고 싶다.


구조

UGOSkillBase를 상속받는 개별 스킬에 GOSkillSlotWidget 위젯 코드를 내 방식대로 바인딩해보았다.

스킬 객체가 주체적으로 해당 스킬과 바인딩된 위젯(Cpp)을 관리하도록 하고 싶어서였다!


매터리얼 준비하기

나의 작고 귀여운 마나... 포토샵보다 일러스트레이터가 익숙한데 지금 컴퓨터에 설치가 안되서 급한대로 포토샵 브러쉬로 그려주었다.

쿨타임 매터리얼 쉐이더를 작성해준다. 아래는 매터리얼 인스턴스로 확인한 것이다.


방법 1 : 델리게이트 및 타이머 사용하기

지금은 사용하지 않는 방법이지만, 맨 처음 떠올린 방법이다.

  • 마나 변경을 감지하는 델리게이트 정의
  • 마나 변경 이벤트 Broadcast
    마나가 변경될 때 델리게이트를 통해 이를 구독하고 있는 모든 스킬 위젯에게 마나 변경을 알린다.

  • 스킬 위젯에서 델리게이트 구독
    각 스킬 위젯에서는 델리게이트를 구독하여, 마나 변경 시 스킬의 사용 가능 여부를 체크하고 UI를 업데이트한다.


방법 2 : Tick 사용하기

스킬 객체가 주체적으로 해당 스킬과 바인딩된 위젯(Cpp)을 관리하도록, 처음에 설계한 구조를 활용할 수 있도록, Tick을 사용하는 방법으로 리팩토링을 해보았다.
위젯의 Tick을 사용하되, 현재 월드의 시간을 기준으로 랙 없이 쿨타임이 지나도록 코드를 작성해주었고, 델리게이트 및 타이머 작동에 따르는 지연시간 없이 매끄러운 쿨타임을 적용할 수 있었다.


개선할 점

쿨타임 및 마나 부족 등 UI에 필요한 정보도 서버의 검증을 받아야 한다.
아직 서버 검증 코드를 추가하기 전이다.

0개의 댓글

관련 채용 정보