• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

c++ - Cocos2d-x 3.7 C++ CCLoad UIPageView 崩溃

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:09:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

这发生在所有平台上,但此描述适用于 iPhone 5s 8.4 模拟器,通过 Xcode。

我一直在使用 C++ 和 cocos2d-x 3.6 版和 Cocostudio 2.3.1 开发游戏。一切都很好,直到我更新到 cocos 3.7 的正式版本。应用程序开始崩溃。其中之一是关于 UIPageView 的特别有趣的。所以我的头文件和cpp文件是这样的:

MKEpochSelectionScene.h

#include "cocos2d.h"
#include "cocos-ext.h"
#include <cocos/ui/CocosGUI.h>

class MKEpochSelectionScene : public cocos2d::Scene {

public:
    bool init();
    CREATE_FUNC(MKEpochSelectionScene);
private:
    cocos2d::ui:ageView * mainPageView;
    void previousEpoch(Ref* pSender, cocos2d::ui::Widget::TouchEventType eEventType);
    void nextEpoch(Ref* pSender, cocos2d::ui::Widget::TouchEventType eEventType);
    void showEpoch(Ref* pSender, cocos2d::ui::Widget::TouchEventType eEventType);
};

MKEpochSelectionScene.cpp

#include "MKEpochSelectionScene.h"
#include <editor-support/cocostudio/CocoStudio.h>
#include "MKGameScene.h"
#include "MKLevelSelectionScene.h"

USING_NS_CC;

bool MKEpochSelectionScene::init()
{
    if(!Scene::init()) return false;

    auto node = CSLoader::createNode("UI/Epoch/Layer.csb");
    this->addChild(node);

    auto buttonLeft = node->getChildByName<ui::Button *>("Button_Left");
    CCASSERT(buttonLeft != nullptr, "Button left is null");
    buttonLeft->addTouchEventListener(CC_CALLBACK_2(MKEpochSelectionScene::nextEpoch,this));

    auto buttonRight = node->getChildByName<ui::Button *>("Button_Right");
    CCASSERT(buttonRight != nullptr, "Button right is null");
    buttonRight->addTouchEventListener(CC_CALLBACK_2(MKEpochSelectionScene::previousEpoch,this));

//******CRASHING LINE

    mainPageView = (cocos2d::ui:ageView *)node->getChildByName("selectEpoch");

//******CRASHING LINE

    CCASSERT(mainPageView != nullptr, "Main pageview is nil");
    CCASSERT(mainPageView->getPages().size() > 0, "age view has zero pages");

return true;
}

//Other methods
//....

}

Sooo.... 事情发生在 mainPageView 上。崩溃发生在我从设计文件中引用 UIPageView 并将其分配给 mainPageView ivar 的行上。 Crash 什么也没说,但在 NavMesh 文件中崩溃如下:

enter image description here

所以当我尝试 pushscene 以从 mainMenu 切换到该场景时,它会崩溃。还有一件事......如果我在 init() 方法中使用局部变量,例如:auto mainPageView 而不是 ivar,它不会崩溃。如果我评论 UIPageView 引用,例如崩溃线 - 它不会崩溃。

我尝试过的:将 Cocostudio 更新为 2.3.1.1,这是最新的。使用该新版本重新发布了所有 UI。清理所有缓存和构建的东西。通过使用新版本创建新项目并从旧版本复制文件并导入到项目中来更新到新的 cocos 引擎版本。这只是说我尝试了几件事。

任何帮助将不胜感激。而且我确信这可能是我的一个愚蠢的错误......

干杯!



Best Answer-推荐答案


我认为您正在触发此错误: https://github.com/cocos2d/cocos2d-x/issues/12962

它将在 v3.7.1 中修复

关于c++ - Cocos2d-x 3.7 C++ CCLoad UIPageView 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610456/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap