[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 天前
9. Mono项目与Unity的关系
unity
在路上看风景1 天前
1.12 Memory Profiler Package - Summary
unity
SmalBox1 天前
【URP】Unity Shader Tags
unity·渲染
极客柒2 天前
Unity 塔防自用可视化路点寻路编辑器
unity·编辑器·游戏引擎
程序猿多布2 天前
Unity AssetBundle详解
unity·assetbundle
萘柰奈2 天前
Unity学习----【进阶】Addressables(二)--加载资源与打包及更新
学习·unity
lvcoc2 天前
unity 接入火山引擎API,包括即梦AI
windows·unity·ai·火山引擎
王家视频教程图书馆2 天前
2025年最新 unityHub游戏引擎开发2d手机游戏和桌面游戏教程
游戏·unity·游戏引擎
SmalBox2 天前
【URP】法线贴图为什么主要是蓝色的?
unity·渲染
2301_793116944 天前
Unity 解决天空盒中间出现一条线
unity