[언리얼] 소프트웨어 커서 해상도에 따른 크기 변경

기맥히나·2025년 9월 8일

Unreal Engine

목록 보기
1/6
post-thumbnail

하드웨어 커서: 마우스 커서 이미지를 GPU에서 직접 렌더링 -> 성능 우선
소프트웨어 커서: 게임 엔진에서 직접 그리는 커서(렌더링) -> 기능 우선(애니메이션 .etc)

내가 만드는 게임에서는 애니메이션 등 다양한 기능이 들어가야하기 때문에 소프트웨어 커서로 제작중이다.
근데 기본 해상도를 1920 * 1080으로 세팅하고 만들다보니 저해상도, 고해상도일 경우 크기가 각각 크거나 작아보인다.
이러한 문제점을 해결하기 위해서 해상도에 따라 독립적인 스케일을 구현해야 한다.

스케일 박스 (Scale Box)
 └ 크기 박스 (Size Box)
  └ 캔버스 패널 (Canvas Panel)
   └ 이미지 (Cursor)
스케일 박스: 하위 위젯을 화면 해상도에 맞춰 비율대로 스케일링
크기 박스: 하위 위젯의 기본 고정 크기를 설정
캔버스 패널 :하위 위젯의 위치 자유 조정

이러한 방식으로 뷰포트 사이즈를 가져와 기본 해상도에 비례해 크기를 세팅한다.

하지만, 구현과정에 문제가 발생했는데 바로 게임을 처음 시작하는 로비 환경에서
커서가 보이지 않는 것이다.


이럴 때, 첫 번째로 확인해야하는 건 바로 함수를 통해 반환되는 값의 로그이다.
게임이 처음 시작될 때 Get Viewport Size를 통해 크기를 반환받는데 이때, 뷰포트가 초기화되지 않은 상태로 호출했기 때문에 (0,0)을 반환한다.

이런 경우에는
1. Delay함수를 써서 비동기방식으로 뷰포트가 초기화될때까지 기다린 후에 함수를 실행
2. 뷰포트 생성 완료 콜백을 사용해 생성된 후 델리게이트를 통해 호출하는 방식

첫 번째 방식은 하드웨어 환경에 따라 편차가 있을 수 있기 때문에 콜백 방식으로 구현하는 것이 가장 안전하다

1개의 댓글

comment-user-thumbnail
2025년 9월 8일

정말 유용하네요 잘 읽고 갑니다!!

답글 달기