FairyGUI 添加动态模糊导致GObject不显示的问题
2019-10-10 本文已影响0人
SingleDigit
现象
某个组件添加动态模糊Filter后,移除动态模糊。有时会有一些图片显示不出来
查找问题
这个问题之前也遇到过,但当时遇到了播放动效层级错位的问题,下意识以为图片不显示也是层级错误了,导致没有找到问题。
最近再次遇到这个问题后,编辑器运行模式下将Unity中的UI的无关的组件全部隐藏,发现Game窗口中不显示的物体在Scene窗口中是显示的,这时在仔细查看物体的各种组件属性,终于发现了根本的问题——GObject的层级和UI相机的层级不一致。
之后又查看了动态模糊和fairyGUI的一些源码,找到了问题出现的原因:1. 动态模糊添加时,会记录GObject的层级,动态模糊移除时,会恢复GObject的层级。2. new出来的界面,在没有显示之前的层级都是default。
尝试解决
最开始的想法是添加动态模糊之前设置一下那个物体的层级,但因为UI展现涉及到多个相机的显示,层级可能不固定,当时的想法是用界面的根节点的层级来设置目标物体的层级,但结果失败了,层级没有改掉。
后来又想在组件界面初始化完成后直接根据组件根节点层级重置一下当前界面所有子物体的,但因为界面新创建不显示之前层级为default,这个方法也不好用。
最终的解决方法还是组件初始的时候重置到指定的层级。