我们项目使用Unity自带后期效果组件:PostProcessing。我在运行中代码动态添加了PostProcessLayer组件后就不停报错。代码与报错如下:
代码
报错
让我们看看源码
PostProcessLayer源码
我们手动在编辑器里添加PostProcessLayer再运行就不会报错了,Init里的Resource不为空,运行中添加的PostProcessLayer组件Init里的Resource是空的。说明我们有没有初始化到数据。
我们再看下PostProcessLayer组件资源
PostProcessLayer组件资源.png
这里我们可以看到,Resources这个是序列化的文件。也就是说可能动态添加组件时,这里的值可能是空的。
通过断点,证明了猜测是对的。在代码里也找到相关注释:
注释.png
最后这个资源还是没办法运行时获取,最后我只能把这个序列化文件放在可加载路径,通过加载序列化文件,然后再调用一次Init()传入。最后的代码如下:
解决后的代码
致此,问题算是解决了,可是这应该不是最好的办法,希望大家有更好的办法请指正一下我。
网友评论