Question>
Canvas class를 기반으로 UI를 만드는 중임.
작은 해상도에서 우측 상단에 표시되어야 할 UI가
큰 해상도에서도 우측 상단에 표시되게 하고 싶음.
즉, 해상도 크기가 달라지더라도, 'UI 위치와 크기의 일관성'을 유지하고 싶음.
이를 위해서 어떻게 개발해야 하는가?
-------------------------------------------------------------
Answer>
UI와 관련된 모든 함수와 변수를 '비율 좌표'를 기반으로 개발하시고
최종적으로 출력할 때만 '절대 좌표'로 출력하시면 됩니다.^^
좀 더 자세히 설명하자면..^^;;;;;
가로 해상도로 0~1, 세로 해상도를 0~1이라고 할 때,
우측 상단에 button을 표시한다면, 아래와 같은 위치 좌표를 가지게 됩니다.
local vector2 vtButtonRatePos;
vtButtonRatePos.x = 0.75f;
vtButtonRatePos.y = 0.1f;
여기에 해상도를 곱한다면, '절대 좌표'가 구해집니다.^^
local vector2 vtButtonAbsPos;
vtButtonAbsPos.x = vtButtonRatePos.x * vtScreenSize.x;
vtButtonAbsPos.y = vtButtonRatePos.y * vtScreenSize.y;
이런 방식으로 모든 UI 관리와 좌표 연산을 vtButtonRatePos로 하시고,
최종적으로 그릴 때만 vtButtonAbsPos를 사용하신다면,
해상도가 다양하게 달라지더라도, 'UI 위치의 일관성'을 유지할 수 있습니다~ ^^
('UI의 크기'도 같은 방식으로 처리하시면 됩니다.)
P.S.
해상도(위에서 표기된 vtScreenSize)는
'class GameViewportClient'의 GetViewportSize()로 구하시면 됩니다.^^
P.S.2
위 방법은 가로 세로 비율이 같은 해상도들 사이에서만 그대로 보존됩니다.
(예> 640:480 = 1024:768 = 2048:1536 = 4:3)
만약에 가로 세로 비율이 서로 다른 해상도에 대해서는
(예> 1600:900=16:9, 1024:768=4:3)
별도의 보정 code를 넣거나, layout을 서로 다르게 처리해 줘야 합니다.^^;;;;;;
Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS