使用Unity后期特效PostProcessing,代码动态添加PostProcessLayer组件报错

我们项目使用Unity自带后期效果组件:PostProcessing。我在运行中代码动态添加了PostProcessLayer组件后就不停报错。代码与报错如下:


代码

代码


使用Unity后期特效PostProcessing,代码动态添加PostProcessLayer组件报错_第1张图片

报错

 

让我们看看源码


使用Unity后期特效PostProcessing,代码动态添加PostProcessLayer组件报错_第2张图片

PostProcessLayer源码


我们手动在编辑器里添加PostProcessLayer再运行就不会报错了,Init里的Resource不为空,运行中添加的PostProcessLayer组件Init里的Resource是空的。说明我们有没有初始化到数据。
我们再看下PostProcessLayer组件资源
使用Unity后期特效PostProcessing,代码动态添加PostProcessLayer组件报错_第3张图片

PostProcessLayer组件资源.png

 

这里我们可以看到,Resources这个是序列化的文件。也就是说可能动态添加组件时,这里的值可能是空的。
通过断点,证明了猜测是对的。在代码里也找到相关注释:


使用Unity后期特效PostProcessing,代码动态添加PostProcessLayer组件报错_第4张图片

注释.png


最后这个资源还是没办法运行时获取,最后我只能把这个序列化文件放在可加载路径,通过加载序列化文件,然后再调用一次Init()传入。最后的代码如下:
解决后的代码

解决后的代码


致此,问题算是解决了,可是这应该不是最好的办法,希望大家有更好的办法请指正一下我。

你可能感兴趣的:(Unity)