当前项目Unity版本:2019.4.23.f1

1.下载URP相关 Package包

Window->Package Manger

2.创建URP PipelineAsset(ForwardRender)文件,并指定一下

(1)创建文件

创建PipelineAsset(ForwardRender) 文件

PipelineAsset(ForwardRender)文件

(2)指定项目使用URP渲染管线,需要设置2处

打开Editor->Project Settting窗口

指定Graphics使用URP

指定Quality使用URP

3.升级shader,支持URP 

(1)升级unity自带的shader

升级Unity自带shader

(2) 自定义shader,只能手动修改。 并且追加到Graphics中

可以参考:内置管线Shader升级到URP详细手册

https://www.jianshu.com/p/3fef69e2efb6

4.多相机实现方式修改。

URP为了实现多相机,Camera添加RenderType属性。整个游戏只能有一个Base,其他都是Overlay,并将Overlay相机添加到 Base相机的Stack列表里。

注意:升级URP之后,Camera.depth不管用了,用Stack列表里的顺序替代,先添加进列表的相机先渲染,后添加的后渲染。

关于设置RenderType和将Overlay相机添加进Base的Stack列表,并控制Stack列表里相机顺序,可以自定义个脚本挂到Camera所在GameObject上。


  1. using UnityEngine;
  2. using UnityEngine.Rendering.Universal;
  3. [RequireComponent(typeof(Camera))]
  4. [DisallowMultipleComponent]
  5. public class URPCamera : MonoBehaviour
  6. {
  7. public static UniversalAdditionalCameraData BaseCamera;
  8. [Tooltip("整个游戏只能有1个Base,其他都是Overlay")]
  9. public CameraRenderType m_CameraRenderType = CameraRenderType.Overlay;
  10. [Tooltip("相机depth(赋值0,取老的Camera.depth)")]
  11. public float m_CameraDepth;
  12. private Camera m_Camera;
  13. private void Awake()
  14. {
  15. m_Camera = GetComponent();
  16. UniversalAdditionalCameraData universalAdditionalCameraData = m_Camera.GetUniversalAdditionalCameraData();
  17. universalAdditionalCameraData.renderType = m_CameraRenderType;
  18. if (m_CameraRenderType == CameraRenderType.Base)
  19. {
  20. if (BaseCamera != null)
  21. {
  22. Debug.LogErrorFormat("URP Camera 配置错误,有多个Base Camera!!! Old = {0}, New = {1}  ", BaseCamera.name, m_Camera.name);
  23. }
  24. else
  25. {
  26. BaseCamera = universalAdditionalCameraData;
  27. }
  28. }
  29. if (m_CameraDepth == 0)
  30. m_CameraDepth = m_Camera.depth;
  31. }
  32. private void Start()
  33. {
  34. if (m_CameraRenderType == CameraRenderType.Overlay)
  35. {
  36. if (BaseCamera != null)
  37. {
  38. if (!BaseCamera.cameraStack.Contains(m_Camera))
  39. BaseCamera.cameraStack.Add(m_Camera);
  40. BaseCamera.cameraStack.Sort((A, B) => { return A.gameObject.GetComponent().m_CameraDepth.CompareTo(B.gameObject.GetComponent().m_CameraDepth); });
  41. }
  42. else
  43. {
  44. Debug.LogError("URP Camera 配置错误,没有Base Camera!!!");
  45. }
  46. }
  47. }
  48. private void OnDestroy()
  49. {
  50. if (m_CameraRenderType == CameraRenderType.Overlay)
  51. {
  52. if (BaseCamera != null)
  53. {
  54. BaseCamera.cameraStack.Remove(m_Camera);
  55. }
  56. }
  57. }
  58. }

 5.后处理,要换实现方式。 

可以参考:

URP屏幕后处理

https://www.jianshu.com/p/d23671fdc2da

到此 URP算是升级完毕了。

Unity3D项目升级URP相关推荐

  1. Unity 升级项目到Urp(通用渲染管线)以及画面后处理

    前言: Urp全称为Universal Render Pipeline,即通用渲染管线 在开始学习Urp之前,需要了解一下,什么是Render PipeLine(渲染管线),渲染管线也称为渲染流水线或 ...

  2. Unity3D项目加密-精锐5加密锁解决方案

    Unity3D项目加密 Unity3D项目研发完成,发布前开发者需要对代码及资源进行加密,防止代码被反编译,防止资源被盗窃,造成不必要的损失.如果不做加密,可能很快就会出现一堆破解版游戏. Unity ...

  3. Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器

    最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...

  4. 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目

    迁移Net项目为Net Core\Standard项目 背景: 我们公司内部有自己ORM开发框架,最新因为需要将系统迁移到国产服务器上,所以首先需要将最基础的ORM框架改造可以运行在国产服务器上.对于 ...

  5. 借助 SAP 电商云 Spartacus UI 提供的 Schematics 辅助您的前端项目升级

    将 Spartacus 升级到新的主要版本(例如,从 3.x 到 4.0)时,Spartacus 迁移机制会自动修复新版本中修改或删除的代码. 当您处理功能或错误,或对 Spartacus 源代码进行 ...

  6. C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6

    概述 .NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NET Framework的项目升级为.NET 6. 升级条件: Windows 操作系统 .NET 6 SDK Visual S ...

  7. Asp.NetCore3.1开源项目升级为.Net6.0

    概述 自从.Net6.0出来后,一直想之前开发的项目升级.Net6.0,有时想想毕竟中间还跨了个5.0版本,升级起来不知道坑大不大,最近抽时间对升级的方案做了些研究,然后将代码升级为.Net6.0.本 ...

  8. ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1

    一.前言  最近一两个星期,加班,然后回去后弄自己的博客,把自己的电脑从 Windows 10 改到 Ubuntu 18.10 又弄回 Windows 10,原本计划的学习 Vue 中生命周期的相关知 ...

  9. vue 安装 less_解决旧Vue项目升级less-loader 6.0.0报错

    作为一个爱折腾的主,我的package随时都是ncu -u! 何为ncu,就是检查nodejs npm/yarn项目依赖最新版本package.json一个插件! 这不,前几天less-loader ...

最新文章

  1. C++:map用法示例
  2. 拼接字符串时去掉最后一个多余逗号
  3. iOS程序启动画面的制作
  4. linux下安装jdk+tomcat+eclipse+mysql
  5. layui移动端适配_实战:移动端适配的最佳实践
  6. 安卓安卓移动操作系统优缺点
  7. keepalived脑裂问题查找
  8. sass使用相关报错
  9. 餐饮小票打印app_POS收银工业平板电脑在餐饮行业的应用
  10. 【codevs1246】丑数,STL与取模大质数的好处
  11. Arduino IDE和ArduBlock 的下载安装
  12. yagmail和keyring的安装与注册
  13. html 漂浮 广告置顶,jquery浮动图片广告代码_页面上漂浮图片广告代码
  14. pr 增加配置文件和级别_用premiere处理视频黑边,出现“该级别的帧大小/帧速率无效……”怎样解决?...
  15. pencil导出html,用Apple Pencil做笔记:要的就是这个感觉!
  16. 车载网络: CAN (Control Area Network) 控制器局域网络
  17. Canvas 绘制直线
  18. apple iOS订阅开发-服务端
  19. 基于SSM框架的OA办公系统
  20. 你竟然写出这样的代码

热门文章

  1. oracle自带的缓存,ORACLE缓存表与ORACLE缓存
  2. 在tsx里写html模板,在Vue中写TSX有哪些需要注意的地方
  3. Vampire:吸血鬼
  4. UVa 10148 - Advertisement
  5. python-docx文档高亮显示
  6. 星际蜗牛矿难机,j1900 4核+4G内存+16Gssd硬盘,群晖6.1,SSD引导成功
  7. Vue子传父详细教程
  8. JavaSE_day02【类型转换、进制、运算符】
  9. MATLAB信号处理——信号与系统的分析基础(2)
  10. 填坑—c语言写单片机中断程序无法返回到中断点—解决办法