HP Bar를 만들었다면 게임 할 때 원하는 위치에 원하는 크기로 보이고 싶을 것이다.
그런데, 이럴수가 폰 마다 화면액정이 다 다른데, 이걸 어떻게 하나.
어떻게 하면 HP Bar 크기를 폰 크기에 상관 없이 일정하게 보여줄 수 있을까?
이렇게 하려면, 폰마다의 크기에 맞춰서 크기를 보여줘야 한다.
말하자면, 동적으로 크기가 바뀌어야 하는 것이다.
그렇게 하려면 아래와 같이 하면 된다.
Canvas scalar를 scale with Screen size로 동적으로 변경되도록 설정해준다.
체력바 Rect Transform으로 이동하여 화면 상단에 좌우로 꽉차고 위아래는 화면 크기의 5%인 HP Bar를 만든다고 치자.
1. 앵커 프리셋 설정(가장 중요)
체력바 오브젝트(예: Image 또는 Panel)의 Rect Transform으로 이동
1. Anchor Presets 버튼 클릭
2. Alt 키를 누른 채, 상단 우측에 있는 가로 스트레치(Stretch, Top) 프리셋을 선택한다.
Alt 키를 누르면 앵커와 함께 피벗(Pivot)과 포지션(Position)이 동시에 이동하여 원하는 자리에 배치됨
2. 너비 IWidth) 설정: 좌우 꽉 채우기
앵커를 가로 스트레치로 설정했기 때문에, 너비(Width)대신 Left와 Right 오프셋 값이 활성화 됨
Left: 화면 왼쪽 경계(Anchor)로 부터의 거리를 0부터 설정가능
Right: 화면 오른쪽 경계(Anchor)로 부터의 거리를 0부터 설정가능
3. 높이 (Height) 설정: 화면 높이의 5%
높이는 Canvas Scaler에 설정된 Reference Resolution을 기준으로 계산 된 값을 입력하면 됨
1. 기준 해상도 확인: Canvas Scaler에 설정된 Reference Resolution의 높이 확인 (예: 1080x1920)
2. 높이 계산: 기준 높이의 5% 계산
1920* 0.05 = 96
3. 최종 Rect Transform 값 :
Anchors: Left0, right 1(가로 스트레치)
Pivot: (0.5, 1)
Left: 0
Right: 0
Height: 96 (사용자의 Reference Resolution 에 따라 달라짐)
여기서 Height를 96으로 하드코딩해도 resolution에 따라 값이 변하는 이유는 canvas Scaler 컴포넌트의 Scale with screen size 설정을 했기 때문이다.
이렇게 설정하면, 캔버스 스케일러의 기준 해상도(Reference Resolution)에 대한 상대적인 크기로 계산해 준다.
캔버스 스케일러의 동적 스케일링 원리
1. 기준 해상도 (Reference Reolution)의 역할
96이라는 Height를 설정하면, Reference Resolution에서 96 크기를 가지는 것을 의미함
2. 유니티가 런타임에 접속한 장시의 실제 해상도를 기준 해상도와 비교하여 계산된 스케일링 계수를 캔버스 전체에 적용함
댓글 없음:
댓글 쓰기