从 .csb 加载的节点具有边界框大小 0

Node loaded from .csb has bounding box size 0

我已经创建了节点(里面有图像和标签),我实例化并添加到场景(在 C++ 代码中)

    auto item_one = CSLoader::createNode("item.csb");
    sprite->addChild(item_one);
    auto r = item_one->getBoundingBox();

并且它是可见的,但是 r 总是有 widthheight 等于 zero。这就是为什么我无法获取点击该项目的原因。为什么边界框为零以及如何更改它? 在 cocos studio Node 中,项目的尺寸为 542 x 542 但是。 有人可以帮忙吗?

CSLoader::createNode("fileName.csb") 加载整个 scene/layer(取决于您创建的内容)。如果您想要特定 child 的尺寸,请使用:

auto imageNode = item_node->getChildByName("NameOfChildInCocostudio");
auto spriteImage = dynamic_cast<Sprite*>(imageNode);
auto spriteBoundingBox = spriteImage->getBoundingBox();

此时你应该得到了图片的宽高。如果你想要它出现的大小,你必须将边界乘以节点比例。使用下面的代码来做到这一点。

auto onScreenWidth = spriteBoundingBox.width * spriteNode->getScaleX();
auto onScreenHeight = spriteBoundingBox.height * spriteNode->getScaleY();

如果有帮助请告诉我。