본문 바로가기
게임 개발(유니티)/공부사항

Lunar-Assault_Recon_ 공부사항 #4

by goraku97 2025. 10. 6.

Camera 컴포넌트

Projection 종류

Perspective(원근)

- 가까운 건 크게, 먼 건 작게 보임(원근 왜곡).

- 크기 = 거리Field of View(FOV)에 따라 달라짐.

- 주로 3D/2.5D 게임 같이, 깊이감이 필요한 경우 사용됨.

 

Orthographic(직교)

- 거리(z)가 크기에 영향을 주지 않음(원근 왜곡 없음).

- 크기 = Camera.orthographicSizeSprite Pixels Per Unit(PPU)로 결정.

- 주로 2D(특히 픽셀아트·슈팅)에서 가장 많이 사용됨.

 

(이 프로젝트는 2D슈팅게임이기 때문에 Perspective 보다는 Orthographic을 선택)

 

 

Canvas Scaler 컴포넌트 

UI ScaleMode 종류

1. Constant Pixel Size

UI가 항상 같은 “픽셀 수”로 렌더링됨.

해상도가 커져도 버튼이 같은 픽셀 크기라 상대적으로 작아 보임.

 

- 해상도 차이가 큰 환경에서 UI가 너무 작거나 너무 커 보일 수 있음(특히 PC 창모드에 불리).

 

2. Scale With Screen Size

Reference Resolution(예: 1920×1080)을 “디자인 기준”으로 삼고, 화면 크기에 맞게 비율 스케일

 

** Reference Resolution : 기준 해상도(향후 창조절을 할떄 해당 해상도 기준으로 비율이 스케일됨)

 

Screen Match Mode 종류

1. Match Width Or Height 

    가로/세로 비율 중 어떤 쪽에 더 맞춰 스케일할지 슬라이더(Match)로 가중치(0~1) 선택.      

  • 0에 가까울수록 = Width 우선(가로 기준 유지)
  • 1에 가까울수록 = Height 우선(세로 기준 유지)
  • 0.5 = 중간 타협

    해당 Mode를 사용하면, 창모드에서 가로세로비율이 바뀌어도 스케일이 부드럽고 연속적으로 변경됨.

    (대부분의 PC/콘솔/창모드 에서 자주 사용됨)

 

2. Expand

    캔버스 전체가 항상 화면 안에 다 보이도록 스케일.    

    동작: finalScale = min(scaleX, scaleY) (더 작은 값 사용) 

            둘 중 더 빡빡한 축에 맞춰 축소해서 전체가 들어오게 함.

 

    UI가 절대 잘리지 않는다는 장점이 있지만,

    어떤 비율에선 UI가 상대적으로 작아 보이거나 여백이 생길 수 있음.

 

3. Shrink

    화면을 가득 채우도록 스케일.

    동작: finalScale = max(scaleX, scaleY) (더 큰 값 사용)

             빈 공간 없이 확대해서 맞춤.

 

    항상 풀화면 느낌이며 여백이 없다는 장점이 있지만,

    비율이 많이 다르면 가장자리 UI가 짤릴 수 있음(앵커/세이프영역 설계 필수!!!)

 

3. Constant Physical Size

  화면 해상도(픽셀 수)가 달라도 버튼의 실제 물리 크기(인치/밀리미터)를 일정하게 유지

  손가락이 느끼는 크기가 기기마다 거의 같게 보이게 함.

 

- 다양한 디바이스(스마트폰, 태블릿 등등)에서 터치 타깃 일관성이 있다는 장점이 있지만,

  PC/콘솔처럼 DPI가 들쭉날쭉하거나 창모드 비율 대응을 세밀히 하고 싶을 때는 컨트롤이 어려움.

  (주로 모바일 쪽으로 개발할떄 고르는 모드)

 

(해당 프로젝트는 PC기준으로 작동하고, 빌드후 창모드의 크기조절도 있기 때문에 해당 옵션으로 설정)

  

위의 내용을 토대로, Camera 컴포넌트의 Projection 은 Orthographic 으로 설정.

Canvas 컴포넌트의 Canvas Scaler는 위 사진과 같이 적용.

빌드후, 창모드에서 창을 줄이거나 늘려도 UI픽셀이 그에 맞춰지게 설정함.

그리고 추가적으로, "WindowsAspectHook" 이라는 스크립트에 

창을 드래그할 때 항상 목표 종횡비(예: 16:9)로 맞추고, 최소/최대 창 크기 범위를

디스플레이 해상도의 비율로 제한하는 코드를 추가하고 적용.

 

이렇게 해서 창모드인 상태에서 어느쪽 방향으로 드래그를 심하게 하든,

창의 픽셀들이 창의 크기에 맞게 알맞게 적용되어, 스프라이트들이 찌그러지거나

위치가 튀는 이질감이 없어지게 됨.

 

** 참고 스크립트

RestoreWindowAtMain.cs
0.00MB
SelectWindowSize.cs
0.01MB
WindowsAspectHook.cs
0.01MB