好的,阿杰 👍
这里给你整理一份 《CocosBuilder 完全攻略》学习笔记,方便快速入门和实战。


📖 CocosBuilder 完全攻略

1. CocosBuilder 简介

  • CocosBuilder 是基于 Cocos2d-x 的 UI 可视化编辑器。
  • 可以用来 编辑界面、动画、场景,通过导出 .ccbi 文件供 Cocos2d-x 程序直接读取。
  • 优势:
    • 可视化设计,减少手写布局代码。
    • 支持动画时间轴编辑。
    • 支持 UI 元素和逻辑代码分离。

2. 基础使用流程

  1. 新建工程
    • 打开 CocosBuilder,选择 File → New Project
    • 选择工程类型:SceneLayerNode
  2. UI 编辑
    • 拖拽 UI 控件(Label、Sprite、Menu、Button)。
    • 设置属性:位置、锚点、缩放、透明度、Z-Order。
  3. 动画编辑
    • 切换到时间轴面板(Timeline)。
    • 关键帧(KeyFrame)控制动作:位置、透明度、缩放。
    • 支持循环播放、触发回调。
  4. 导出资源
    • File → Publish → 导出 .ccbi 文件。
    • 资源(图片、字体)会打包进工程目录。

3. 在 Cocos2d-x 中加载 CocosBuilder

#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;

class HelloCocosBuilder : public cocos2d::Layer
{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(HelloCocosBuilder, create);

    virtual bool init() {
        return true;
    }

    // 绑定 CocosBuilder 控件
    void onButtonClicked(cocos2d::Ref* sender) {
        CCLOG("按钮被点击了!");
    }
};

// 加载 CCBI 文件
Scene* createHelloScene() {
    auto scene = Scene::create();
    auto layer = HelloCocosBuilder::create();

    // 读取 CCBI
    auto nodeLoaderLibrary = NodeLoaderLibrary::newDefaultNodeLoaderLibrary();
    auto ccbReader = new CCBReader(nodeLoaderLibrary);
    auto node = ccbReader->readNodeGraphFromFile("HelloWorld.ccbi", layer);
    scene->addChild(node);
    ccbReader->release();

    return scene;
}


4. CocosBuilder 与代码的绑定

  • 在 CocosBuilder Inspector 中设置控件名称(比如 startButton)。
  • 在代码中通过 CCBSelectorResolver 或 CCBMemberVariableAssigner 绑定。
bool onAssignCCBMemberVariable(Ref* target, const char* memberVariableName, Node* node) {
    CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "startButton", MenuItemImage*, this->startButton);
    return false;
}

SEL_MenuHandler onResolveCCBCCMenuItemSelector(Ref* target, const char* selectorName) {
    CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onStartClicked", HelloCocosBuilder::onButtonClicked);
    return NULL;
}


5. 常见问题

  • 控件无法响应事件 → 检查 Selector 是否绑定正确。
  • 资源丢失 → 确认图片路径与 publish 导出路径一致。
  • 动画不播放 → 记得在代码中调用:ccbReader->getAnimationManager()->runAnimationsForSequenceNamed("Default Timeline");

6. 学习路线建议

  1. 熟悉 Cocos2d-x 基础(精灵、场景、层、事件)。
  2. 学会在 CocosBuilder 中 设计 UI、设置动画
  3. 练习 代码绑定 UI 控件
  4. 尝试开发 完整小项目(菜单界面 + 游戏场景 + 动画过渡)。

👉 这样你就可以用 CocosBuilder + Cocos2d-x 快速开发跨平台游戏 UI 和动画了。