版本:Unity 6 (6000.0)
语言:English
在 URP 资源中显示高级属性
在运行时更改 URP 资源设置

在运行时更改活动的 URP 资源

Unity 有几个预设的质量设置级别,您也可以向项目中添加更多级别。为了适应不同的硬件规格,您可以从 C# 脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性以及以任何您喜欢的方式响应用户输入。 更多信息
参见 术语表
切换这些级别和关联的 URP 资源。以下示例展示了如何使用 API 更改质量设置级别和活动的 URP 资源,以及如何在运行时更改 URP 资源中的特定设置。

注意:您应该仅在性能不至关重要的点(例如加载屏幕或静态菜单期间)在运行时更改质量设置和 URP 资源设置。这是因为这些更改会导致暂时但显著的性能影响。

更改活动的 URP 资源

每个质量级别都使用一个 URP 资源来控制许多特定的图形设置。您可以为每个质量级别分配不同的 URP 资源,并在运行时在它们之间切换。

配置项目质量设置

要使用质量设置在 URP 资源之间切换,请确保项目的质量级别已配置为使用不同的 URP 资源。URP 3D 示例 场景场景包含游戏环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您放置环境、障碍物和装饰,从本质上讲是分段设计和构建游戏。 更多信息
参见 术语表
默认情况下具有此配置。

  1. 为每个质量级别创建一个 URP 资源。为此,在项目窗口中右键单击,然后选择创建 > 渲染 > URP 资源(带通用渲染器)

    注意:这些说明也适用于使用 2D 渲染器的 URP 资源。

  2. 根据需要配置和命名新的 URP 资源。

  3. 打开项目设置中的质量部分(编辑 > 项目设置 > 质量)。

  4. 将每个 URP 资源分配给一个质量级别。为此,从级别列表中选择一个质量级别,然后转到渲染 > 渲染管线资源,并选择为此质量级别创建的 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() 方法选择质量级别,如下所示。

    注意:每个质量级别都有一个索引,该索引与质量级别在项目设置窗口的质量部分列表中的位置相匹配。列表顶部的质量级别的索引为 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. 创建一个空的 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功用由附加在其上的组件定义。 更多信息
    参见 术语表
    并将其命名为 QualityController。为此,在层次结构窗口中右键单击,然后选择创建空对象

  7. 检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
    参见 术语表
    中打开 QualityController 对象。

  8. 将 QualityControls 脚本作为组件添加到 QualityController。

现在,当此场景加载时,Unity 将运行 QualityControls 脚本中的 SwitchQualityLevel 方法,该方法检测系统的总显存并设置质量级别。质量级别将 URP 资源设置为活动的 渲染管线一系列操作,用于获取场景的内容并在屏幕上显示它们。Unity 允许您从预构建的渲染管线中选择,或编写自己的渲染管线。 更多信息
参见 术语表
资源。

您可以创建更复杂的系统和检查序列来确定要使用的质量级别,但基本过程保持不变。当项目启动时,运行一个使用 QualitySettings.SetQualityLevel 选择质量级别的脚本,并通过该脚本选择项目在运行时使用的 URP 资源。

在 URP 资源中显示高级属性
在运行时更改 URP 资源设置