[Unity]动态修改URP资源的相关参数

一、获取当前的UniversalRenderPipelineAsset

工程里UniversalRenderPipelineAsset可能有好几种(比如low、mid、high等),游戏运行时会根据机型动态加载指定的UniversalRenderPipelineAsset,以下代码可以动态获取当前使用的UniversalRenderPipelineAsset具体是哪个,然后动态修改阴影等别的参数:

复制代码
        UniversalRenderPipelineAsset m_URPAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset;
        if (m_URPAsset != null)
        {
            m_DefaultDistance = m_URPAsset.shadowDistance;
            m_URPAsset.shadowDistance = m_ShadowDistance;
        }

二、一个坑

上面代码在Start函数里只能获取默认的UniversalRenderPipelineAsset,而不是当前实际运行的UniversalRenderPipelineAsset,我这边的做法是在协程里等了一帧去获取:

复制代码
    private IEnumerator IEResetShadows()
    {
        //第一帧的时候获取的是默认的pipeline
        yield return null;
        // 动态设置阴影距离
        UniversalRenderPipelineAsset m_URPAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset;
        if (m_URPAsset != null)
        {
            m_DefaultDistance = m_URPAsset.shadowDistance;
            m_URPAsset.shadowDistance = m_ShadowDistance;
        }
    }
相关推荐
NRatel12 小时前
亚马逊S3的使用简记(游戏资源发布更新)
游戏·unity·amazon s3
SmalBox18 小时前
【渲染流水线】[几何阶段]-[屏幕映射]以UnityURP为例
unity·渲染
SmalBox2 天前
【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
unity·渲染
SmalBox2 天前
【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
unity·渲染
霜绛3 天前
Unity:GUI笔记(一)——文本、按钮、多选框和单选框、输入框和拖动条、图片绘制和框绘制
笔记·学习·unity·游戏引擎
谷宇.3 天前
【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
游戏·unity·c#·unity3d·游戏开发·游戏编程
17岁的勇气3 天前
Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
笔记·学习·unity·图形渲染·顶点着色器·曲面着色器
benben0444 天前
《Unity Shader入门精要》学习笔记一
unity·shader
YF云飞4 天前
Unity图片优化与比例控制全攻略
游戏·unity·游戏引擎·游戏程序·个人开发
SmalBox4 天前
【渲染流水线】[几何阶段]-[几何着色]以UnityURP为例
unity·渲染