[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;
        }
    }
相关推荐
小春熙子1 小时前
Unity图形学之CubeMap立方体贴图
unity·游戏引擎·贴图·技术美术
浅陌sss1 小时前
Unity中动态生成贴图并保存成png图片实现
unity·游戏引擎·贴图
小春熙子2 小时前
Unity图形学之法线贴图原理
unity·游戏引擎·贴图·技术美术
老朱佩琪!6 小时前
UNity将脚本中的文本提示显示在编辑器中
unity·c#·编辑器
杳戢7 小时前
技术美术百人计划 | 《2.1 色彩空间介绍》笔记
笔记·unity·游戏引擎·图形渲染·技术美术
tealcwu15 小时前
【Unity How】Unity中如何实现物体的匀速往返移动
unity·游戏引擎
恬静的小魔龙1 天前
【SKFramework框架核心模块】3-2、音频管理模块
3d·unity·编辑器·游戏引擎·音视频
浅陌sss1 天前
物体网格弹性变形---Unity中实现
unity·游戏引擎
异次元的归来1 天前
Unity DOTS中的Entity
unity·游戏引擎
向宇it1 天前
【unity小技巧】Unity 四叉树算法实现空间分割、物体存储并进行查询和碰撞检测
开发语言·算法·游戏·unity·游戏引擎