Version: Unity 6.0 (6000.0)
언어 : 한국어
URP 에셋의 고급 프로퍼티 표시
런타임 시점에 URP 에셋 설정 변경

런타임 시점에 활성 URP 에셋 변경

Unity는 다양한 레벨의 품질 설정 프리셋을 제공하며, 프로젝트에 프리셋을 더 추가할 수도 있습니다. C# 스크립트에서 프리셋 레벨 및 연결된 URP 에셋을 전환하여 다양한 하드웨어 사양을 수용할 수 있습니다. 다음 예시는 API를 사용하여 품질 설정 레벨과 활성 URP 에셋을 변경하는 방법과 런타임 시점에 URP 에셋의 특정 설정을 변경하는 방법을 보여줍니다.

참고: 로딩 화면이나 정적 메뉴 등과 같이 성능이 중요하지 않은 지점에서만 런타임 시점에 품질 설정과 URP 에셋 설정을 변경해야 합니다. 이러한 변경은 일시적이지만 성능에 큰 영향을 주기 때문입니다.

활성 URP 에셋 변경

각 품질 레벨은 URP 에셋을 사용하여 여러 특정 그래픽스 설정을 제어합니다. 각 품질 레벨에 서로 다른 URP 에셋을 할당하고 런타임 시점에 전환할 수 있습니다.

프로젝트 품질 설정 구성

품질 설정을 사용하여 URP 에셋 간에 전환하려면 프로젝트의 품질 레벨이 서로 다른 URP 에셋을 사용하도록 설정되어 있어야 합니다. URP 3D 샘플 씬은 기본적으로 그렇게 설정되어 있습니다.

  1. 각 품질 레벨에 대한 URP 에셋을 생성합니다. 프로젝트 창에서 오른쪽 클릭 후 Create > Rendering > URP Asset (with Universal Renderer)을 선택하면 됩니다.

    참고: 이 지침은 2D 렌더러를 사용하는 URP 에셋에도 적용됩니다.

  2. 필요에 따라 새 URP 에셋을 설정하고 이름을 지정합니다.

  3. 프로젝트 설정에서 품질 섹션(Edit > Project Settings > Quality)을 엽니다.

  4. 각 URP 에셋을 품질 레벨에 할당합니다. Levels 리스트에서 품질 레벨을 선택한 뒤 Rendering > Render Pipeline Asset으로 이동해 이 품질 레벨에 대해 생성한 URP 에셋을 선택하면 됩니다. 모든 품질 레벨에 대해 이를 수행합니다.

이제 프로젝트의 품질 레벨을 사용하여 런타임 시점에 URP 에셋 간에 변경할 수 있습니다.

품질 레벨 변경

QualitySettings API를 통해 Unity가 런타임 시점에 사용하는 품질 레벨을 변경할 수 있습니다. 앞서 설명한 대로 품질 레벨을 설정하면 URP 에셋 뿐만 아니라 품질 설정 프리셋을 전환할 수 있습니다.

다음의 간단한 예제에서는 C# 스크립트가 빌드된 프로젝트를 열 때 사용자 입력 없이도 시스템의 총 그래픽스 메모리를 사용하여 적절한 품질 레벨을 결정합니다.

  1. QualityControls라는 이름의 새 C# 스크립트를 생성합니다.

  2. QualityControls 스크립트를 열고 SwitchQualityLevel 메서드를 QualityControls 클래스에 추가합니다.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class QualityControls : MonoBehaviour
    {
        void Start()
        {
                
        }
            
        private void SwitchQualityLevel()
        {
                
        }
    }
    
  3. 아래와 같이 SwitchQualityLevel 메서드에 switch 문을 추가하여 QualitySettings.SetQualityLevel() 메서드로 품질 레벨을 선택합니다.

    참고: 각 품질 레벨에는 하나의 인덱스가 있으며 이는 프로젝트 설정 창의 Quality 섹션에 있는 리스트에서 해당 레벨의 위치를 나타냅니다. 리스트 맨 위에 있는 품질 레벨의 인덱스는 0입니다. 이 인덱스는 빌드된 프로젝트 버전의 타겟 플랫폼에 대해 활성화된 것으로 지정한 품질 레벨만 계산합니다.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class QualityControls : MonoBehaviour
    {
        void Start()
        {
                
        }
            
        private void SwitchQualityLevel()
        {
            // Select Quality settings level (URP Asset) based on the size of the device's graphics memory
            switch (SystemInfo.graphicsMemorySize)
            {
                case <= 2048:
                    QualitySettings.SetQualityLevel(1);
                    break;
                case <= 4096:
                    QualitySettings.SetQualityLevel(2);
                    break;
                default:
                    QualitySettings.SetQualityLevel(0);
                    break;
            }
        }
    }
    
  4. Start 메서드에서 SwitchQualityLevel 메서드에 대한 호출을 추가합니다. 이렇게 하면 씬이 처음 로드될 때만 품질 레벨이 변경됩니다.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class QualityControls : MonoBehaviour
    {
        void Start()
        {
            SwitchQualityLevel();
        }
            
        private void SwitchQualityLevel()
        {
            // Select Quality settings level (URP Asset) based on the size of the device's graphics memory
            switch (SystemInfo.graphicsMemorySize)
            {
                case <= 2048:
                    QualitySettings.SetQualityLevel(1);
                    break;
                case <= 4096:
                    QualitySettings.SetQualityLevel(2);
                    break;
                default:
                    QualitySettings.SetQualityLevel(0);
                    break;
            }
        }
    }
    
  5. 시작될 때 빌드한 프로젝트가 로드하는 첫 번째 씬을 엽니다.

  6. 빈 게임 오브젝트를 생성하고 QualityController라고 명명합니다. 계층 창에서 오른쪽 클릭 이후 Create Empty를 선택하면 됩니다.

  7. 인스펙터에서 QualityController 오브젝트를 엽니다.

  8. QualityControls 스크립트를 QualityController에 컴포넌트로 추가합니다.

이제 이 씬이 로드되면 Unity는 QualityControls 스크립트의 SwitchQualityLevel 메서드를 실행하여 시스템의 총 그래픽스 메모리를 감지하고 품질 레벨을 설정합니다. 품질 레벨은 URP 에셋을 활성 렌더 파이프라인 에셋으로 설정합니다.

더 복잡한 시스템과 검사 시퀀스를 만들어 사용할 품질 레벨을 결정할 수도 있으나, 기본적인 프로세스는 동일합니다. 프로젝트가 시작되면 QualitySettings.SetQualityLevel을 사용하는 스크립트를 실행하여 품질 레벨을 선택하고, 이를 통해 프로젝트가 런타임 시점에 사용할 URP 에셋을 선택합니다.

URP 에셋의 고급 프로퍼티 표시
런타임 시점에 URP 에셋 설정 변경