[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;
        }
    }
相关推荐
墨笺染尘缘7 小时前
Unity——鼠标是否在某个圆形Image范围内
unity·c#·游戏引擎
Thomas_YXQ9 小时前
Unity3D项目开发中的资源加密详解
游戏·3d·unity·unity3d·游戏开发
杀死一只知更鸟debug15 小时前
Unity自学之旅05
unity·游戏引擎
qq_59821175716 小时前
Unity编辑拓展显示自定义类型
unity·游戏引擎
你疯了抱抱我17 小时前
【VRChat · 改模】Unity2019、2022的版本选择哪个如何决策,功能有何区别;
unity·vr·vrchat
Thomas_YXQ19 小时前
Unity3D 动态骨骼性能优化详解
开发语言·网络·游戏·unity·性能优化·unity3d
Yungoal1 天前
Unity入门1
unity·游戏引擎
杀死一只知更鸟debug1 天前
Unity自学之旅04
unity
k5694621662 天前
失业ing
unity·游戏引擎
橘子遇见BUG2 天前
Unity Shader学习日记 part5 CG基础
学习·unity·游戏引擎·图形渲染