cocos2d-x 场景对象比较复杂时,需要多个Camera,为什么不生效呢?
这里我来分析一下原因:
首先RichText,加入的数据是RichElement,并不是UI对象,最终生成的节点是要通过RichElement来生成的,
加入RichElement只是做了简单的处理,节点并没有生成,setCameraMask是继承自ProtectedNode的,setCameraMask时protectedChild是空的,
void Widget::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags)
{
if (_visible)
{
adaptRenderers();
ProtectedNode::visit(renderer, parentTransform, parentFlags);
}
}`
```c
在渲染的时候,会调用visit方法,然后调用adaptRenderers才会生成真正的UI节点,
其实就是就是,richText在当前帧不会生成UI节点,会在下一帧的时候生成,如果在一下帧设置setCameraMask,不太符合代码逻辑,所以richText里重写setCameraMask方法,里面设置CameraMask的之前调用adaptRenderers,即可设置成功。
本人测试通过`