Version: 6000.3
语言: 中文
在URP资产中显示高级属性
在运行时更改 URP 资产设置

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

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

注意:你只能在运行时在性能不重要的时候更改 质量(Quality) 设置和 URP 资产(URP Asset) 设置,例如在加载屏幕或静态菜单上。这是因为这些更改会对性能造成暂时但重大的影响。

更改活动的URP资产

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

配置项目质量设置

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

  1. 为每个质量级别创建一个URP资产。为此,请在 项目(Project) 窗口中右键点击,然后选择 > URP资产> 创建渲染(使用通用渲染器) (Create Rendering with Universal Renderer) 。

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

  2. 根据需要配置并命名新的 URP 资产。

  3. 打开 项目设置(Project Settings) 中的 质量(Quality) 分段(编辑(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. 添加一个switch语句中的SwitchQualityLevel使用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. 将调用添加到SwitchQualityLevel方法Start方法。这可确保质量级别仅在场景首次加载时更改。

    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。为此,请在 层级窗口(Hierarchy Window) 中单击鼠标右键,然后选择 创建空(Create Empty)。

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

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

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

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

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