Cocos2d-x游戏开发之一 CocosBuilder编辑器使用

CocosBuilder学习之一:认识CocosBuilder CocosBuilder学习之一:认识CocosBuilder CocosBuilder是一款原生的支持cocos2d 阅读详情

简言

CocosBuilder与interface builder 类似,是cocos2d下简单快速进行精灵,层,场景布局的工具。可以快速完美的进行菜单和交互场景的布局,是Cocos2d系列的配套开源工具,最新的版本是3.0

参考资料

CocosBuilder官网 

http://cocosbuilder.com/

从零开始学习CocosBuilder

http://article.ityran.com/archives/2614

安装

直接去官网下载 ,从归档文件解压,并把它拷贝到应用程序文件夹




接下来,先上我将完成的的实例界面

目前的简单功能是,点击菜单Tutorial进入说明界面然后可返回到主菜单;

开始CocosBuilder

先在新建文件夹LineRunner,用于存放cocos2d-x工程和CocosBuilder工程

第一部分:在CocosBuilder中新建工程并构建好界面

在CocosBuilder中新建工程

在菜单中选择File\New\New Project,命名工程为LRCocosBuilder并保存到LineRunner目录

得到默认界面,这个不是我们要的,


首先,你需要删除MainScene.ccb文件,它只是程序默认创建的场景。

注意:你可能觉得通过CocosBuilder 工程去删除文件很直接,但我没能直接删除。在Finder中删除MainScene.ccb和MainScene.js 如果有人知道简单的方式,请回复。

另外,CocosBuilder 3.0默认会是勾选js controlled,可以在cocosbuilder里面选择document->javascript controlled,把对勾去掉就可以了(注:会影响后的的菜单等事件的绑定,我在这还卡住了)。

第一步:准备所需的资源图片,把所有的资源文件复制到工程目录下的Resources,即可在Cocosbuilder看到。

接下来,选择File\New\New File,在下拉菜单中从菜单项中选择iPhone Landscape 和 iPhone 5 Landscape,另外确保根类型为CCLayer。


第二步:开始构建界面

点击工具条的CCSprite按钮,添加一个 标题,背影精灵


设置精灵图片

接下来添加菜单,点击工具条的Menu,加入3个菜单项


其中先添加图中的1(菜单Menu),再添加2(菜单项CCMenuItemImageMenu),并先设置好图片属性,其中的事件绑定我们下面会说。。


我们可以从这Timeline里看到层次结构,这里在设置动画可会用到


第三步:我们完成了第一个界面,接下来关键的一步,将场景连接到类

当你通过CocosBuider 创建的CCLayer来设置场景时,如果你想使场景层为自定义类,你需要为CocosBuilder指明那个类。

例如,如果你用MainMenuScene初始化了一个场景并且你希望它的场景层是你自定义的类,你需要在CocosBuilder的代码连接区指明类名。

选中MainMenuScene.ccb,在TimeLine中CCLayer根节点。



在右侧代码连接区设置自定义类为MainMenuLayer,这样当你初始化场景时,CocosBuilder会寻找名叫MainMenuLayer的类去初始化场景层。接下来是要发布CocosBuilder界面文件,点击File,选择Publish,这将在场景目录创建一个名字为MainMenuScene.ccbi的文件。

CocosBuilder介绍到这,接下来介绍如何在Cocos2D-x下工作。

第二部分,在cocos2d-x使用场景并绑定事件

首先确保你安装了最新的Cocos2D,写本文时是cocos2d-2.1rc0-x-2.1.3版。

新建一个cocos2d-x工程,命名为LineRuner,

1)将在CocosBuilder工程中用的图片资源添加到工程的Resources下,并确保“Copy items to destination group’s folder (if needed)”为选中状态,另外 LineRuner Target也为选中状态。

2)把在cocosBuilder工程生成的MainMenuScene.ccbi文件直接拖到Resources下,不要复制不要选中“Copy items to destination group’s folder (if needed)”,因为这样只是保持链接,而不用每次改动.ccbi文件都要复制到cocos2d-x工程下。

在LineRuner工程的class目录下新建目录layers,并新建一个C++文件MainMenuLayer.cpp,并修改MainMenuLayer文件

MainMenuLayer.h

#ifndef __LineRuner__MainMenuLayer__
#define __LineRuner__MainMenuLayer__

#include <iostream>
#include "cocos2d.h"
#include "cocos-ext.h"
class MainMenuLayer : public cocos2d::CCLayer{
public:
    static cocos2d::CCScene* scene();
};
#endif /* defined(__LineRuner__MainMenuLayer__) */

MainMenuLayer.cpp

#include "MainMenuLayer.h"
#include "LRTutorialScene.h"
USING_NS_CC;
USING_NS_CC_EXT;

CCScene* MainMenuLayer::scene(){
    CCScene *scene = CCScene::create();
    CCNodeLoaderLibrary *lib = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    CCBReader* reader = new CCBReader(lib);
    CCNode *node = reader->readNodeGraphFromFile("LRMainMenuScene.ccbi", scene);
    reader->release();
    if (node != NULL) {
        scene->addChild(node);
    }
    return scene;
}

修改AppDelegate.cpp中默认的启动scene

CCScene *pScene = MainMenuLayer::scene();
如果没有错误的话, 你应该可以看到运行的效果.


这时我们点击界面上的图片是没有反应的

下面来绑定菜单事件

我们再次打开cocosBuilder工程,在选中菜单项并设置调用方法,设置这两项即可


记得编辑完之后要Publish一下,才能反应到实际文件上。

回到Xcode,LineRunner工程,再次修改MainMenuLayer文件,添加几个函数

MainMenuLayer.h

#ifndef __LineRuner__MainMenuLayer__
#define __LineRuner__MainMenuLayer__

#include <iostream>
#include "cocos2d.h"
#include "cocos-ext.h"
class MainMenuLayer : public cocos2d::CCLayer,
public cocos2d::extension::CCBSelectorResolver{
public:
    static cocos2d::CCScene* scene();
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(MainMenuLayer, create);
    //菜单处理
    virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName);
    //控件处理
    virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName);

    //在CocosBuilder上绑定的方法
    void options(cocos2d::CCObject *pSender);
    void tutorial(cocos2d::CCObject *pSender);
    void play(cocos2d::CCObject *pSender);
};
class MainSceneLayerLoader : public cocos2d::extension::CCLayerLoader
{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(MainSceneLayerLoader, loader);
protected:
    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(MainMenuLayer);
};
#endif /* defined(__LineRuner__MainMenuLayer__) */

MainMenuLayer.cpp

#include "MainMenuLayer.h"
#include "LRTutorialScene.h"
USING_NS_CC;
USING_NS_CC_EXT;

CCScene* MainMenuLayer::scene(){
    CCScene *scene = CCScene::create();
    CCNodeLoaderLibrary *lib = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    
    lib->registerCCNodeLoader("MainMenuLayer", MainSceneLayerLoader::loader());
    CCBReader* reader = new CCBReader(lib);
    CCNode *node = reader->readNodeGraphFromFile("LRMainMenuScene.ccbi", scene);
    reader->release();
    if (node != NULL) {
        scene->addChild(node);
    }
    return scene;
}
SEL_MenuHandler MainMenuLayer::onResolveCCBCCMenuItemSelector(cocos2d::CCObject *pTarget, const char *pSelectorName)
{
    CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "options", MainMenuLayer::options);
    CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "play", MainMenuLayer::play);
    CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "tutorial", MainMenuLayer::tutorial);
    return NULL;
}
SEL_CCControlHandler MainMenuLayer::onResolveCCBCCControlSelector(cocos2d::CCObject *pTarget, const char *pSelectorName){
    return NULL;
}
void MainMenuLayer::options(cocos2d::CCObject *pSender){
    CCLog("options");
}
void MainMenuLayer::play(cocos2d::CCObject *pSender){
    CCLog("play");
}
void MainMenuLayer::tutorial(cocos2d::CCObject *pSender){
    CCLog("tutorial");
}

运行项目,可看到点击每个菜单的输出Log...

最后一步,创建新的场景并在主菜单上进入。

按照上面的步骤在cocosBuilder上新建,名为LRTutorialScene的场景,并将layer的Custom class设置LRTutorialScene,在这里我们新加个UIControlButton 控件,并设置图片和点击事件


回到xcode,新建LRTutorialScene.cpp,C++文件,编写文件

LRTutorialScene.h

#ifndef __LineRuner__LRTutorialScene__
#define __LineRuner__LRTutorialScene__

#include <iostream>
#include "cocos-ext.h"
#include "cocos2d.h"
class LRTutorialScene
:public cocos2d::CCLayer
, public cocos2d::extension::CCBSelectorResolver{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(LRTutorialScene, create);
    virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName);
    virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName);
    void backMenuAction(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEvent pCCControlEvent);
};
class LRTutorialSceneLoader : public cocos2d::extension::CCNodeLoader
{
public:
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(LRTutorialSceneLoader, loader);
protected:
    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(LRTutorialScene);
};
#endif /* defined(__LineRuner__LRTutorialScene__) */

LRTutorialScene.cpp

#include "LRTutorialScene.h"

USING_NS_CC;
USING_NS_CC_EXT;

SEL_MenuHandler LRTutorialScene::onResolveCCBCCMenuItemSelector(cocos2d::CCObject *pTarget, const char *pSelectorName){
    return NULL;
}
SEL_CCControlHandler LRTutorialScene::onResolveCCBCCControlSelector(cocos2d::CCObject *pTarget, const char *pSelectorName)
{
    CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "backMenuAction", LRTutorialScene::backMenuAction);
    return NULL;
}
void LRTutorialScene::backMenuAction(cocos2d::CCObject *pSender, cocos2d::extension::CCControlEvent pCCControlEvent){
    CCLog("LRTutorialScene");
    CCDirector::sharedDirector()->popScene();
}

另外在MainMenuLayer.h文件上增加函数

    void openScene(const char * pCCBFileName, const char * pCCNodeName = NULL, cocos2d::extension::CCNodeLoader * pCCNodeLoader = NULL);

MainMenuLayer.cpp

void MainMenuLayer::openScene(const char * pCCBFileName, const char * pCCNodeName, cocos2d::extension::CCNodeLoader * pCCNodeLoader){
    CCScene *scene = CCScene::create();
    CCNodeLoaderLibrary *lib = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    
    lib->registerCCNodeLoader(pCCNodeName, pCCNodeLoader);
    CCBReader* reader = new CCBReader(lib);
    CCNode *node = reader->readNodeGraphFromFile(pCCBFileName, scene);
    reader->release();
    if (node != NULL) {
        scene->addChild(node);
    }
    CCDirector::sharedDirector()->pushScene(scene);
}
在MainMenuLayer.cpp的tutorial函数上响应,

void MainMenuLayer::tutorial(cocos2d::CCObject *pSender){
    CCLog("tutorial");
    this->openScene("LRTutorialScene.ccbi","LRTutorialScene",LRTutorialSceneLoader::loader());
}

 运行项目,看结果吧。。

先到这吧,会继续更新这个例子,慢慢学慢慢加更多的功能。。
源码下载地址:

金山快盘:http://www.kuaipan.cn/file/id_88462402013626369.htm

优快云


CocosBuilder与Lua结合:高效构建Cocos2d-x游戏UI的完整指南 在游戏开发中,UI(用户界面)的构建与逻辑分离是提升开发效率的关键。其核心原理在于将视觉表现与程序逻辑解耦,通过数据驱动的方式实现界面动态更新。这项技术的价值在于大幅降低美术与程序间的沟通成本,支持快速迭代和热更新,尤其适合UI复杂、交互频繁的移动游戏项目。具体到Cocos2d-x引擎,结合Lua脚本语言与CocosBuilder可视化编辑器,形成了一套成熟的解决方案:CocosBuilder负责编辑场景布局并生成.ccbi资源文件,定义了节点的层级、属性和动画时间线;Lua则通过CCBReader加载该文 阅读详情

相关推荐

CocosBuilder3.0实战指南:可视化编辑与游戏UI开发

在游戏开发中,可视化的场景与UI编辑器能显著提升效率并降低协作成本,尤其对Cocos2d-x这类引擎而言,界面表现与代码逻辑的解耦至关重要。CocosBuilder3.0作为一款经典的编辑器,通过拖拽布局、时间轴动画、数据绑定等能力,让开发者无需反复猜测坐标即可搭建完整界面。其导出的.ccbi文件由CCBReader加载,自动还原节点树与回调,配合成员变量绑定,大幅减少胶水代码。无论是独立制作战斗结算面板,还是适配多分辨率屏幕,CocosBuilder3.0都提供了一套轻量、稳定的工作流。本文从编辑器核心原

weixin_27011811的博客 291

Unity 使用SpriteShape制作2D游戏任意形状地形

文章目录一. 安装SpriteShape二. 创建Sprite Shape Profile三. 制作一个Open Shape地形四. 编辑地形五. 添加地形碰撞六. Geometry Collider代码 一. 安装SpriteShape 打开Unity菜单Window-Package Manager 因为我用的Unity版本是2019.2.14f1,2D SpriteShape插件还属于pre...

linxinfa的专栏 1万+

CocosBuilder 2.1:Mac平台的游戏开发利器

本文还有配套的精品资源,点击获取 简介:CocosBuilder 2.1是一个面向Mac OS X的Cocos2d游戏开发的可视化编辑工具,具有游戏场景构建、UI设计和动画制作功能。它集成了代码编辑和图形界面设计,简化了UI布局和交互设计。CocosBuilder 2.1允许用户创建和编辑游戏元素,并内置节点树视图以调整层级关系。它还提供了CSS样式表似的界面样式编辑功能,...

weixin_28713083的博客 1378

游戏开发 cocosBuilder cocosCreator cocosPods

cocos creator: 游戏开发工具,Cocos引擎-游戏开发引擎 cocos builder: 支持cocos2d和cocos2d-x的UI编辑器,现在已经被CocoStudio取代,CocosBuilder学习之一:认识CocosBuilder CocoStudio:游戏开发工具集,CocoStudio - 百度百科 ...

baidu_40537062的博客 4608

CocosBuilder2.1

CocosBuilder2.1,需要的下载吧

CocosBuilder-3.0.alpha5-src源代码

CocosBuilder与interface builder 类似,是cocos2d下简单快速进行精灵,层,场景布局的工具。 CocosBuilder可以快速完美的进行菜单和交互场景的布局,如果手动去做,这往往让人头疼。

Cocos2d-x游戏开发必知工具

Cocos游戏的相关工具: 第一个工具:GlyphDesigner .app  字体编辑器                官网 https://71squared.com/glyphdesigner 第二个工具:ParticleDesigner.app 粒子编辑器,生成一个plist                官网 https://71squared.com/particledes

DynastyTing的专栏 949

CocosBuilder-2.1.zip 正宗2.1版本

CocosBuilder-2.1.zip 正宗2.1版本 很好很强大的一个工具 希望对大家提高编程效率有帮助~

使用CocosBuilder2.1结合cocos2d-x2.0.3创建动画场景

原文地址:http://article.ityran.com/archives/2140 本为由泰然教程组成员浅底原创,作为一位经验丰富的游戏开发人员,这次浅底将CocosBuilder经验分享给大家,希望大家喜欢,欢迎拍砖!!转载请注明出处!! 在使用Cocos2d框架开发iOS游戏的时候,对于每一个场景(CCScene)的编辑是比较麻烦的,好在有外国的牛人提供...

weixin_33716154的博客 155

【FDTD运行引擎错误解决方法】

我用的是2024R1版的FDTD,第一次安装好的时候点“RUN”可以正常运行,后来不知道什么问题就无法运行了。我从网上找相关的解决办法,并未找到,将软件卸载重装,重启等方法都没有解决,后来在官网按照提示解决了,我把官网提供的方式和我的情况相结合,提供一个解决方式。提示:以下是本篇文章正文内容,下面案例可供参考最后说一下两个MPI和Local computer(不使用MPI)的区别使用MPI进行仿真可以显著提高计算速度和效率,特别是对于大规模和复杂的仿真任务,但需要额外的设置和配置。(多线程并行计算)

m0_57410975的博客 8171

手把手教你用Verilog实现MDIO控制器(附完整VHDL代码对比)

本文详细介绍了如何使用Verilog实现MDIO控制器,并提供了与VHDL实现的深度对比。通过解析MDIO协议核心要点,展示Verilog状态机架构设计和关键时序控制逻辑,同时对比VHDL在信号声明、状态机实现和双向端口处理上的差异。适用于以太网硬件设计开发者,帮助掌握MDIO控制器自主实现能力。

weixin_30682415的博客 422

cocos2d-x初探学习笔记(29)-cocosBuilder

cocosBuilder编辑器正是作为可视化编辑的补充,成为cocos2D-iphone和cocos2D-x的可视化编辑器,cocos2D-x从2.0版本开始支持cocosBuilder,同样cocosBuilder也是2.0版本与之对应,本篇来就介绍cocoBuilder编辑器的使用和将cocosBuilder工程倒入到cocos2D-x的程序工程里。 可以通过c...

weixin_30607029的博客 190

硬件基础——mos管

文章目录前言一、寄生参数二、使用步骤1.引入库2.读入数据总结 前言 MOS管设计重点 一、寄生参数 1.寄生电容 mos管有寄生电容Cgs,此电容大小一般为pF级别,一般规格书可以查到。 使用时,要特别注意GS管教的寄生电容Cgs,控制MOS管的导通与截止,本质上是控制Cgs电容的充放电。(最好要加限流) 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

Malqaq的博客 6595

Cocos2D家族的前世今生

记者 / 陈粲然 Cocos2D,这款用于开发2D游戏的开发框架以及由其衍生的Cocos2D-X跨平台开发框架和众多分支,正在帮助越来越多的开发者实现高效稳定的游戏开发。《程序员》近日专访了Cocos2D-iPhone作者Ricardo Quesada,请他分享Cocos2D家族的发展历程与未来方向。 1973年,Ricardo Quesada出生于阿根廷。 在Ricardo

oSKyTonight的专栏 1019

ChatBI告别“NL2SQL依赖症”!从准确率50%到90%,3大技术路线+4个企业案例拆解核心玩法

摘要: ChatBI通过自然语言交互实现数据民主化,其核心是“语义理解+数据执行+知识沉淀”的全链路能力,而非单一的NL2SQL技术。行业采用三大技术路线提升准确率:专有知识库(提升30%)、指标标签语义层(准确率85%)、JSON中间层(多轮对话提升25%)。数据执行方案包括NL2SQL、NL2API等,需结合场景选择。企业落地需解决四大痛点:跨表查询准确率低(引入拓扑图)、模糊查询(用户干预机制)、响应慢(预计算缓存)、多轮对话(上下文池)。Spring AI Alibaba提供轻量级集成方案,助力企业

weixin_52610848的博客 1653

SAP S/4HANA Public Cloud 配置全景实践

本文提供SAP S/4HANA Public Cloud配置的实用指南,重点介绍三大核心工具:CBC(范围界定与配置)、SAP Activate(方法论与路线图)和Cloud ALM(项目执行与运维)。文章详解了不同系统架构(2SL/3SL)的配置路径,并以制造企业案例说明端到端实施流程。同时提供了工具协同操作方法、初始访问安全建议和常见问题的专家意见,帮助项目团队高效完成实施工作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 560

Cocos2d-x 相关开发工具

   cocos2d-2.0-x-2.0.3   CocosBuilder-2.1  可视化界面编辑工具  Tiled   地图编辑器  TexturePacker   图片合成工具  ParticleDesigner  粒子特效制作工具

jenthshi的专栏 204

1.4 KFD 设备文件的获取与驱动握手协议

本文分析了OpenClose模块中libhsakmt与KFD内核驱动建立通信的过程。首先通过hsaKmtOpenKFD()函数打开/dev/kfd设备文件,建立用户态与内核态的通信通道。随后通过AMDKFD_IOC_GET_VERSION ioctl命令完成版本握手,确认双方的接口兼容性。KFD驱动采用Major.Minor二级版本号体系,当前主要版本为1,从1.1演进到1.19不断添加新功能。整个过程构成了用户态与内核态之间的"建连协议",是所有后续GPU操作的基础前提。

图形/计算GPU的驱动与虚拟化技术分享园地 601

Cocos2D简介

本文前半部分来自《程序员》杂志(2012年06月22日),博文来源:http://www.kuqin.com/gamedev/20120622/320986.html (后半部分附上本人搜集的有用链接) Cocos2D家族的前世今生 Cocos2D,这款用于开发2D游戏的开发框架以及由其衍生的Cocos2D-X跨平台开发框架和众多分支,正在帮助越来越多的开发者实现高效稳定的游戏开发。《程序...

weixin_30527143的博客 168

在 LangGraph 中集成 Skills 增强智能体能力

LangGraph 的核心是通过**状态机 + 节点(Node) + 工具(Tool)**来编排智能体流程,你可以把 Skills 理解为“封装好的工具或可复用的任务流”,下面是一套可落地的集成方案。

lpfasd123的博客 1179

SAP 权限配置(复合角色)

复合角色创建步骤:业务场景:通常单一角色权限颗粒度划分比较细,当需要分配单一角色权限A、B(多个单一角色)给某账号用户Y时,可以先建立一个复合角色C,将A、B绑定到复合角色C中,再将角色C分配给账号Y即完成权限配置。 业务模拟: 1、PFCG创建复合角色: 2、在角色页面添加子角色 在角色分页内添加子角色,点击“菜单”分页中的“读菜单”即可导入子角色中的菜单: 3、将用户分配给...

willieyuan的博客 7087

CocosBuilder

1.创建工程 2.设置资源路径 (只有在新添加资源文件夹时候用) 3.设置编辑好的文件存储路径 4.导出编辑好的ccb文件

renzhe20092584的专栏 277

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Plist文件

特殊文件 Plist文件   Plist文件即属性列表(Property List),该文件是一种用来存储串行化后的对象的文件。属性列表文件的文件扩展名为.plist,因此通常被称为plist文件。也就是说该文件最初来自MAC系统,因Cocos2d-x起源于cocos2d-iphone,所以这一文件格式也被一同引入。  在cocostudio编辑器中,目前支持的plis

linuxheik的专栏 2227

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

终极游戏开发利器:CocosBuilder 可视化编辑器完全指南

还在为游戏界面设计而烦恼吗?想要快速创建精美的游戏场景却苦于代码编写?今天我要向你介绍一款改变游戏开发流程的神器——CocosBuilder。作为 Cocos2d 引擎的官方可视化编辑器,它让游戏开发变得前所未有的简单和高效。无论你是独立开发者还是团队项目,CocosBuilder 都能大幅提升你的开发效率。 ## 🎯 为什么每个游戏开发者都需要 CocosBuilder? 传统的游戏开发流

gitblog_00072的博客 384

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

cocos2d-x与CocosBuilder笔记:HelloCocosBuilder

Cocos2d-xCocosBuilder 目录(?)[+] 本文将一步一步展示怎样将CocosBuilder导出的东西加入到cocos2d-x工程中,生成可执行程序。这涉及到几个问题: 安装CocosBuilder,然后大致了解其功能使用CocosBuilder编辑并保存将CocosBuilder的输出加入到cocos2d-x工程中 下面逐一介绍。coco

zltianhen的专栏 4368

Cocos2d-x JavaScript Binding结合CocosBuilder跨平台游戏开发简明教程

作者:刘松  微博 前言 由国人自己研发的开源游戏引擎Cocos2d-x,在很短的时间内就风靡全球,来自多个国家的开发者均参与贡献代码,其优秀毋庸置疑。但是,年轻的Cocos2d-x正处于快速发展阶段,围绕其周边的配套工具、文档、教程等等均尚不完善。我本人在学习的过程中就体会过把Google、StackOverflow、github以及官方论坛等等翻个底朝天都找不到相关资料的窘境。这也

u013790419的专栏 1426
上一篇: iphone--使将对象加入NSMutableArray中 引用计数不加1
下一篇: Cocos2d-x游戏开发之二 2.0版本修改的api
CJsen
博客等级 码龄17年 46粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值