▣ 먼저 Canvas를 생성하고 Button 및 Text를 활용하여 GameSettingUI를 제작합니다.
▣ Canvas Scaler의 각 필드 설명
UI Scale Mode (UI 스케일 모드):
UI의 스케일 방식에 대한 설정입니다. 해상도에 따라 UI가 어떻게 조정될지를 결정합니다.
Constant Pixel Size: UI 요소의 크기를 픽셀 크기로 고정합니다.
Scale with Screen Size: 화면 크기에 맞춰 UI 요소의 크기를 스케일 합니다.
Constant Physical Size: 물리적 크기에 따라 UI 요소의 크기를 조정합니다.
▣ Reference Resolution (기준 해상도):
Scale with Screen Size 모드에서 사용됩니다. 기준 해상도를 설정하면 이 해상도에 맞춰 UI가 비율에 맞게 스케일 됩니다.
예를 들어 3840x2160을 기준 해상도로 설정하면, 더 큰 해상도에서는 UI가 커지고, 더 작은 해상도에서는 UI가 작아집니다.
▣ Screen Match Mode:
해상도가 기준 해상도와 다를 때, UI가 너비와 높이 중 어느 쪽을 기준으로 스케일 될지를 결정합니다.
Match Width or Height: 너비와 높이 중 어느 쪽을 더 중시할지 결정할 수 있습니다.
Expand: 화면의 작은 쪽에 맞춰 UI를 확장합니다.
Shrink: 화면의 큰 쪽에 맞춰 UI를 축소합니다.
▣ Match Width or Height:
Match Width or Height 모드에서 너비와 높이를 어떻게 조정할지를 설정합니다. 0이면 너비, 1이면 높이에 맞춥니다. 0.5로 설정하면 둘의 비율을 균등하게 맞춥니다.
▣ CanvasScaler 설정 시 UI가 화면을 벗어나는 문제는 주로 잘못된 스케일링 방식이나 참조 해상도 설정으로 인해 발생합니다. 해상도가 변경될 때 UI 요소들이 화면에 맞게 스케일링되지 않아, 화면을 벗어나거나 크기가 비정상적으로 변할 수 있습니다. 이를 방지하려면 CanvasScaler 설정을 보다 정확하게 조정하고, 해상도가 바뀔 때도 UI가 자연스럽게 스케일링되도록 해야 합니다.
이를 해결하기 위한 주요 방법은 다음과 같습니다:
해결 방법
적절한 Reference Resolution(참조 해상도) 설정:
해상도를 변경할 때 CanvasScaler의 referenceResolution을 일관되게 유지하여 UI가 특정 해상도에서 가장 잘 보이도록 합니다.
예를 들어, 기본적으로 자주 사용되는 해상도(1920x1080)를 참조 해상도로 설정하고, 다른 해상도에서는 화면 비율에 맞춰 UI를 조정하는 방식입니다.
Screen Match Mode 설정:
Match Width or Height 옵션을 적절히 조정하여 UI가 화면의 너비나 높이에 맞춰서 자동으로 스케일 되도록 합니다. 일반적으로 0.5는 너비와 높이를 균등하게 맞추지만, 해상도에 따라 0(너비 우선) 또는 1(높이 우선)로 설정할 수 있습니다.
Anchor와 Pivot을 적절히 설정:
UI 요소가 화면을 벗어나는 문제는 RectTransform의 Anchor(앵커) 설정이 잘못된 경우에도 발생할 수 있습니다. UI 요소의 앵커를 적절하게 설정하면, 해상도에 따라 UI가 잘 정렬되고 크기가 조정됩니다.
▣ UpdateResolutionText(), UpdateGraphicsQualityText(), UpdateFullScreenText() 메서드는 각 설정 값에 맞는 UI 텍스트를 업데이트합니다.
해상도는 Screen.SetResolution()을 통해 적용됩니다.
그래픽 품질은 QualitySettings.SetQualityLevel()을 사용하여 설정됩니다.
ApplyCanvasScalerSettings()를 통해 CanvasScaler 설정도 변경됩니다.
CanvasScaler의 referenceResolution을 해상도에 따라 설정합니다. 예를 들어, resolutionIndex == 1일 경우 1920x1080 해상도가 설정됩니다.
matchWidthOrHeight = 0.5f는 너비와 높이를 균등하게 맞추는 설정입니다.
SaveSettings(): PlayerPrefs를 사용하여 설정을 저장합니다. 저장된 값은 게임을 종료하고 다시 실행해도 유지됩니다.
LoadSettings(): 저장된 설정을 불러와 초기 상태를 설정합니다.
요약
이 스크립트는 게임 내 해상도, 그래픽 품질, 전체화면 설정을 관리하고 저장/불러오기 기능을 제공하는 UI 관리 시스템입니다. UI를 통해 설정을 조정하고, 사용자가 설정을 적용하면 CanvasScaler도 자동으로 조정되어 해상도가 변경될 때 UI가 적절하게 스케일 됩니다.
▣ 해상도 및 그래픽 품질 설정
해상도 설정: OnResolutionLeftClick()과 OnResolutionRightClick() 메서드는 사용자가 왼쪽 또는 오른쪽 버튼을 눌러 해상도를 변경할 수 있도록 합니다.
그래픽 품질 설정: OnGraphicsLeftClick()과 OnGraphicsRightClick() 메서드는 그래픽 품질을 변경하는 데 사용됩니다.
전체화면 설정: OnFullScreenToggleClick() 메서드는 전체화면 여부를 토글(켜짐/꺼짐)하는 역할을 합니다.
https://docs.unity3d.com/ScriptReference/Screen.SetResolution.html
https://docs.unity3d.com/ScriptReference/QualitySettings.SetQualityLevel.html
https://docs.unity3d.com/ScriptReference/UnityEngine.UI.CanvasScaler.html
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
https://docs.unity3d.com/ScriptReference/UI.Text.html
https://docs.unity3d.com/ScriptReference/Mathf.Max.html
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 PauseMenu (9) | 2024.09.18 |
---|---|
유니티 Loading Scene (8) | 2024.09.18 |
유니티 Camera Shake (0) | 2024.09.15 |
유니티 Single RayCast, Multi RayCast (1) | 2024.09.14 |
유니티 Animator, Animation, Blend Tree (1) | 2024.09.14 |
댓글