[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;
        }
    }
相关推荐
真鬼1231 小时前
【Unity 6】Unity6快捷下载,快速下载
unity·游戏引擎
会潜水的小火龙3 小时前
unity打包apk报错Failure to initialize问题解决方法
unity·游戏引擎
平行云5 小时前
实时云渲染平台数据通道,支持3D应用文件上传下载分享无缝交互
linux·unity·云原生·ue5·gpu算力·实时云渲染·像素流送
Sator17 小时前
unity仅用粒子系统实现拖尾
unity·游戏引擎
游乐码7 小时前
Unity基础(五)四元数相关
unity·游戏引擎
想做后端的前端7 小时前
Unity热更新 - HybridCLR & YooAsset
unity·游戏引擎
鹿野素材屋8 小时前
Unity预加载:减少游戏中首次加载资源时的卡顿
windows·游戏·unity
HonestGoat19 小时前
Unity3d之碰撞体设置
unity
那个村的李富贵1 天前
Unity自适应文本提示框:从原理到实战
unity·游戏引擎
HonestGoat1 天前
Unity3d之鼠标光标
unity