[실전 게임 코드 리뷰 :: 유니티 클리커 게임] 4. 프리팹 제작 및 실전 팁
Category: Unity Lesson 1
태그: Unity Lesson 1
인프런에 있는 Rookiss님의 [실전 게임 코드 리뷰] 유니티 클리커 게임 강의를 듣고 정리한 게시글입니다.
🔔강의 보러가기 클릭
📕 UI 프리팹 만들기
UGUI Image를 사용하면 Canvas가 꼭 필요하며, Canvas의 하위 오브젝트가 될 Image의 사이즈는 Canvas에 종속되게 된다. 따라서 Canvas의 인스펙터 내 Canvas Scaler 컴포넌트에 영향을 받게 되고,
UI Scale Mode에 따라 설정해야 하는 속성이 달라지고 캔버스에서 UI 요소가 스케일 되는 방법을 결정하는 기능을 가졌다.
📑 Constant Pixel Size
- UI 요소가 화면 크기에 관계없이 동일한 픽셀 크기로 유지된다.
Constant Pixel Size 설정:
프로퍼티: | 기능: |
---|---|
Scale Factor | 캔버스의 모든 UI 요소를 이 배율로 스케일합니다. |
Reference Pixels Per Unit | 스프라이트에 이 ‘Pixels Per Unit’ 설정이 적용된 경우 스프라이트의 1픽셀이 UI의 유닛 하나에 해당합니다. |
📑 Scale With Screen Size
- 화면이 커질수록 UI 요소도 커진다.
Scale With Screen Size 설정:
프로퍼티: | 기능: |
---|---|
Reference Resolution | UI 레이아웃에 적합한 해상도입니다. 화면 해상도가 크면 UI가 더 크게 스케일되고 작으면 UI가 더 작게 스케일된다. |
Screen Match Mode | 현재 해상도의 종횡비가 레퍼런스 해상도에 맞지 않는 경우 캔버스 영역을 스케일하는 데 사용되는 모드이다. |
Match Width or Height | 캔버스 영역의 너비 또는 높이를 레퍼런스로 사용하여 스케일하거나 그 사이로 스케일한다. |
Expand | 캔버스 크기가 레퍼런스보다 더 작아지지 않도록 캔버스 영역을 수평 또는 수직으로 확장한다. |
Shrink | 캔버스 크기가 레퍼런스보다 커지지 않도록 캔버스를 수평 또는 수직으로 자른다. |
Match | 스케일링 레퍼런스로 너비 또는 높이를 사용할지, 아니면 둘 사이의 배합을 사용할지 결정한다. |
Reference Pixels Per Unit | 스프라이트에 이 ‘Pixels Per Unit’ 설정이 적용된 경우 스프라이트의 1픽셀이 UI의 유닛 하나에 해당한다. |
📑 Constant Physical Size
- 화면 크기와 해상도에 관계없이 UI 요소가 동일한 물리적인 크기로 유지된다.
프로퍼티: | 기능: |
---|---|
Physical Unit | 포지션 및 크기를 지정하는 물리적 단위이다. |
Fallback Screen DPI | 화면 DPI를 알 수 없는 경우 가정되는 DPI이다. |
Default Sprite DPI | ‘Pixels Per Unit’ 설정이 ‘Reference Pixels Per Unit’ 설정과 일치하는 스프라이트에 사용할 인치당 픽셀(DPI)이다. |
Reference Pixels Per Unit | 스프라이트에 ‘Pixels Per Unit’ 설정이 있는 경우 DPI는 ‘Default Sprite DPI’ 설정과 일치한다. |
📑 Canvas 컴포넌트가 World Space인 경우 표시되는 World Space Canvas 설정:
프로퍼티: | 기능: |
---|---|
Dynamic Pixels Per Unit | UI에서 동적으로 생성되는 비트맵(예: 텍스트)에 사용할 단위당 픽셀의 양이다. |
Reference Pixels Per Unit | 스프라이트에 ‘Pixels Per Unit’ 설정이 있는 경우 스프라이트의 픽셀 하나가 월드의 유닛 하나에 해당한다. ‘Reference Pixels Per Unit’을 1로 설정하면 스프라이트의 ‘Pixels Per Unit’ 설정이 그대로 사용된다. |
대체로 Scale With Screen Size 을 자주 사용하는 편이다.
왜냐하면 Reference Resolution에 해상도를 설정해 놓고, 실제 기기의 해상도가 설정한 해상도 보다 크거나 작을 경우 비율에 맞춰 자동으로 UI 사이즈를 어느정도 맞춰 주기 때문이다.
추가적으로 UI를 구성할 때 모든 해상도를 완벽하게 대응할 수는 없다.
해당 프로젝트도 Scale With Screen Size를 사용하여 UI를 구성했다.
💡 Tip
- UI 스크립트에 어싸인도 좋지만 코드에서 Initialize 하는 편이 관리적인 방향으로 봤을 때 좋다.
- 이것 저것 오브젝트들을 스크립트 인스펙터에 닥치는 대로 어싸인해서 만드는게 과연 좋은 방법인지 생각해보자.
- UI 스크립트에서는 UI 관련 요소들만 넣고 실제 데이터는 다른 곳에서 관리.
- MVVC, MVC 같은 패턴을 고려하면서 코딩하는 것도 좋은 방법이다.
📢 오늘의 한마디
⚡규모가 작은 프로젝트를 만들 때, 프레임을 신경 안 쓰고 즉흥적으로 만드는 경우가 많은데 규모가 어떻게 되든지 프레임을 신경써서 만드는 것이 장기적으로 나의 스타일을 만들 수 있기 때문에 좋은 것 같다.
그리고 나 또한 미니 프로젝트 구성을 스크립트에 이것저것 오브젝트 어싸인으로 하는 것이 좋은 방법이라고 생각 했는데, 다시 한번 그게 맞는지에 대해 생각해 보는 강의였다.
이 게시물에는 지극히 주관적인 생각이 포함되어 있습니다.
오류나 틀린 부분, 또는 수정해야 할 부분이 있다면 언제든지 댓글 혹은 메일로 지적 부탁드립니다.
Comment