【URP】Unity中自定义Render feature后Build模式下shader引用缺失

【URP】Unity中自定义Render feature后Build模式下shader引用缺失

记录一下最近Unity项目中遇到的令人头大的bug。

问题描述

项目使用URP renderer,引入了自定义的Render feature。
编辑器中运行正常的游戏,在build后一直弹出材质未找到的log。
打开log,发现报错的信息大致如下(节选)
Cannot create required material because shader is null
UnityEngine.StackTraceUtility:ExtractStackTrace () (at C:/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
UnityEngine.Logger:Log (UnityEngine.LogType,object)
UnityEngine.Debug:LogError (object)
UnityEngine.Rendering.CoreUtils:CreateEngineMaterial (UnityEngine.Shader) (at D:/Unity Projects/Payback_dev/Library/PackageCache/com.unity.render-pipelines.core@7.5.1/Runtime/Utilities/CoreUtils.cs:817)
HologramBlockRenderPass:.ctor ()

分析

注意到log中是自定义的HologramBlockRenderPass中出了问题。这是一个Render feature,引用了自定义的shader,但是这个shader无法引用到,猜测是在build的时候似乎没有被打包进去。

解决方案

网络上搜索到普通Unity项目的解决方法

https://www.likecs.com/show-203395921.html
1.想办法在场景中引用这个shader
2.将shader放入Resources文件夹内,并在Project Setting/Graphics中设置Always include shader.总是引用.
3.assetbundle热更新shader

参考后决定采用第二个方法,具体步骤如下。

  1. Edit->Project settings->Graphics
  2. 找到Always included shaders,将size设为相应的大小,并添加render feature里用到的shader
  3. Build!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值