[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;
        }
    }
相关推荐
omegayy3 小时前
Unity 2022.3.x部分Android设备播放视频黑屏问题
android·unity·视频播放·黑屏
与火星的孩子对话8 小时前
Unity3D开发AI桌面精灵/宠物系列 【三】 语音识别 ASR 技术、语音转文本多平台 - 支持科大讯飞、百度等 C# 开发
人工智能·unity·c#·游戏引擎·语音识别·宠物
向宇it9 小时前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎
牙膏上的小苏打23331 天前
Unity Surround开关后导致获取主显示器分辨率错误
unity·主屏幕
Unity大海1 天前
诠视科技Unity SDK开发环境配置、项目设置、apk打包。
科技·unity·游戏引擎
浅陌sss1 天前
Unity中 粒子系统使用整理(一)
unity·游戏引擎
维度攻城狮2 天前
实现在Unity3D中仿真汽车,而且还能使用ros2控制
python·unity·docker·汽车·ros2·rviz2
为你写首诗ge2 天前
【Unity网络编程知识】FTP学习
网络·unity
神码编程2 天前
【Unity】 HTFramework框架(六十四)SaveDataRuntime运行时保存组件参数、预制体
unity·编辑器·游戏引擎
菲fay2 天前
Unity 单例模式写法
unity·单例模式