如下图:
到目前为止,GameScene依赖于节点在SpriteBuilder中的顺序去决定其绘制的顺序。
level content(_levelNode)被首先绘制,然后GameMenuLayer被画在前者的上面。
不管如何,现在你在代码中删除了_levelNode,然后加载了一个新的并且把它作为GameScene的一个孩子添加进来。添加一个节点将总是将其放在绘制列表的最后面。
因此,绘制顺序现在反转了,所以你不再能看到pause按钮了(其在GameMenuLayer层上).
为了修复这个问题,修改addChild:方法为:
level.zOrder = -1;
[self addChild:level];
//or将上面两句换成下面一句:
//[self addChild:level z:-1];
z序(zOrder)属性决定节点的绘制顺序。同一个父节点的所有子节点,z序低的在z序高的节点之前绘制。如果子节点的z序相同则按其添加到父节点的顺序显示。