어느 개발자의 스토리
[Unity 개발] 유니티 그래픽 옵션 설정 구현하기 본문
모바일 3D게임을 만들 때 신경써야하는 게 그래픽 관련 최적화일 것입니다.
유니티에서는 QualitySetting을 변경해 실시간으로 그래픽 옵션을 변경할 수 있도록 제공하고 있습니다.
저는 해당 기능을 통해 현재 개발중인 게임 옵션창에 아래와 같은 기능을 추가하였습니다.
이 글에서는 테스트 프로젝트를 이용해 해당 기능을 간단하게 구현하는 방법을 알려드리겠습니다.
유니티가 익숙하지 않으신 분들은 따라하기 어려울 수도 있습니다.
구현 결과 미리 보기
1. Pipeline Asset 만들고 설정하기
먼저 해당 기능을 추가하기 위해 Pipeline Asset을 성능별(상,중,하)로 만들어 줍니다.
현재 필자는 Universal Render Pipeline(URP)를 사용하고 있으므로 Universal Render Pipeline Asset을 만들었습니다.
Pipeline Asset을 만들었으면 이제 원하는 값으로 그래픽 옵션을 설정합니다.
HDR, Render Scale, Cast Shadow 와 같은 옵션을 변경하면서 테스트해보시길 권장합니다.
2. UI 창 만들기
각 Pipeline Asset과 설정을 마쳤다면 유니티의 Dropdown기능을 이용해 UI창을 만들어 봅시다.
Hierarchy에서 UI -> Dropdown 을 만듭니다. 꼭 TextMeshPro로 만들 필요는 없습니다.
이제 만들어진 Dropdown의 Text를 LOW, MIDDLE, HIGH 로 변경합니다.
Hierarchy창에서 Dropdown을 누르면 Inspector창에서 Options 목록을 확인할 수 있습니다.
3. QualitySettingManager
이제 Dropdown을 이용해 설정을 변경할 때 실행될 함수를 만들기 위해
QualitySettingManager(임의)를 만들고 같은 이름으로 스크립트를 만들어줍니다.
아래의 스크립트는 완성된 스크립트입니다.
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UI;
public class QualitySettingManager : MonoBehaviour
{
// 성능별로 만들어진 PipelineAsset List
[SerializeField]
List<RenderPipelineAsset> RenderPipelineAssets;
// Dropdown UI
[SerializeField]
TMP_Dropdown Dropdown;
public void SetPipeline(int value)
{
QualitySettings.SetQualityLevel(value);
QualitySettings.renderPipeline = RenderPipelineAssets[value];
}
}
스크립트 작성 후 Inspector에 위 그림과 같이 오브젝트들을 넣어줍시다.
4. Dropdown 값 변경 시 호출되는 함수 설정
이제 Dropdown의 값을 우리가 변경했을 때 QualitySettingManager의
SetPipelin 함수가 호출되도록 해봅시다.
Dropdown의 메뉴가 변경될 시 호출되는 OnValueChanged함수에
QualitySettingManager의 SetPipeline함수를 설정합니다.
이렇게 설정하면 LOW선택시 0, MIDDLE 선택시 1, HIGH 선택시 2로 각 숫자가
자동적으로 함수의 인자가 됩니다.
5. Project Settings -> Quality 설정
마지막으로 ProjectSetting에서 Quality를 수정해야합니다.
현재 저의 세팅은 Quality Level이 Low, Medium, High 총 3개의 Level이 있지만
5개의 Level이 있을 수도 있습니다. 그럴때는 2개의 Level을 삭제하시면 됩니다.
Level의 갯수를 3개로 만든 후 각 Level을 클릭하여 1번에서 만든 PipelineAsset을 넣어줍니다.
이제 실행 후 Dropdown을 하나씩 변경해보면 옵션이 변경되는 것을 확인할 수 있다.
'유니티 개발' 카테고리의 다른 글
[Unity 개발] 안드로이드 13버전 권한 관련 문제 (0) | 2023.03.13 |
---|