zIndex为1的canvas会被PersistNode遮挡

Crescent Moon
Tue, 05 Mar 2019 14:14:29 +0000

Creator 版本：2.0.8

目标平台： 浏览器调试模式，微信开发工具，微信Android端都有出现，估计是全平台

详细报错信息，包含调用堆栈：无报错

重现方式：运行Demo

出现概率：100%

额外线索：由于属性设置面板不能设置node的zIndex，另写了一个组件，通过setter函数直接修改了CanvasNode的zIndex并序列化保存了，从另一个场景切换过来后，zIndex为1的Canvas依然被zIndex为0的PersistNode遮挡TestZIndex.zip (960.9 KB)

预期效果，zIndex为1的Canvas显示在PersistNode上方，即界面中展示一个字母B的图片
实际效果：显示在上方的是另一个场景中设置的PersistNode中的字母A的图片

QQ截图20190305221123.png892×510 13.9 KB

实际是因为美术有一个需求，LoadingScene的背景需要播放一个复杂动画，然后切换到主场景。为了实现这个转场动画，就把背景节点包含整个动画设为了PersistNode，播放完后切换到游戏场景，背景保留下来置于游戏Canvas之下当新场景的背景。
实际实现后，发现PersistNode在切换场景后会默认被置于最顶层，与需求不符，就想到手动设置zIndex来改变层级，然后就发现了这个bug。
所以其实是需要一种手段，能使得PersisitNode不在切换场景后被置于顶部

阅读整个主题