Need help with creator_to_cocos2dx?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

216 Stars 98 Forks 259 Commits 43 Opened issues


Creator plugin to support C++& Lua in cocos2d-x

Services available


Need anything else?

Contributors list

Table of Contents generated with DocToc

Creator support for Cocos2d-x


  • cocos2d-x: v3.14+
  • Cocos Creator: v1.4+


Given that Creator uses a component based model to create its objects, and cocos2d-x has its monolithic structure, it is only possible to support a limited subset of Creator features.

Supported nodes:

  • Scene
  • Sprite
  • Canvas
    (but only one per scene)
  • ScrollView
  • Label
  • EditBox
  • ParticleSystem
  • TiledMap
  • Button
  • ProgressBar
  • RichText
    • Need cocos2d-x 3.16+ to support img tag, refer to this issue for detail information.
    • Doesn't support
      line height
      because cocos2d-x's
      doesn't support this features.
    • Doesn't support
      horizontal alignment
      because cocos2d-x's
      doesn't support this features. Though cocos2d-x v3.16+ supports this feature, but it is hard for plugin to danymicly supporting it according cocos2d-x's version.
  • SpineSkeleton
  • Widget
    : only supports
  • Animations
  • VideoPlayer
    : iOS should add
    to the project
  • WebView
  • Slider
  • Toggle
  • ToggleGroup
  • PageView
  • Mask
  • Collider
  • Prefab
  • DragonBones
  • MotionStreak

Supporting JavaScript scripts would be overkill. If you need JavaScript scripting support, just use Creator.

Sample project

Can fetch this branch and run

. The branch based on v3.15, don't forget to update external libraries.

Currently support on Mac, iOS, Android and Windows.

How to generate the needed files

  • download and install Cocos Creator
  • use Cocos Creator to open creator_project
  • click Project -> LuaCPP Support -> Setup Target Project
  • fill in Project Path, it is a c++ or lua project created by cocos2d-x(3.14+) console
  • click Build


  • Export Resource Only, only resources include Creator scene files will be exported, the reader source code won't. It will be usefull when you don't want to cover the reader code in Cocos2d-x project.
  • Export Resource Dynamically Loaded, export the resources that might be used in runtime, those resources located at assets/resources.
  • Auto Build After Scene Saved, as the name said, auto build and export resources after Creator scene saved.

You will find:

  • all needed source codes are generated into
    NATIVE_PROJECT_ROOT/Classes/reader(it is NATIVE_PROJECT_ROOT/frameworks/runtime-src/Classes/reader for lua project)
  • all needed resources are generated into
    NATIVE_PROJECT_ROOT/Resources/creator(it is NATIVE_PROJECT_ROOT/frameworks/runtime-src/Resources/creator for lua project)

Header search path

For cpp projects, just add

into header search path.

For lua projects, add the following header paths:

  • reader
  • reader/collider
  • reader/animation
  • reader/dragonbones/cocos2dx
  • reader/dragonbones/armature
  • reader/dragonbones/animation
  • reader/dragonbones/events
  • reader/dragonbones/factories
  • reader/dragonbones/core
  • reader/dragonbones/geom

If developing for Android, can just use existing
, for example, use the
into your game's
like this:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := MyGame_shared


LOCAL_SRC_FILES := hellocpp/main.cpp




LOCAL_STATIC_LIBRARIES := cocos2dx_static

LOCAL_STATIC_LIBRARIES += creator_reader_lua # for lua project

LOCAL_STATIC_LIBRARIES += creator_reader # add dependence




$(call import-module,.) $(call import-module, ./../../Classes/reader) # import module path

If developing with Lua, then need to add

into plugin's

Using it from C++

// mygame.cpp

#include "reader/CreatorReader.h"

void some_function() { creator::CreatorReader* reader = creator::CreatorReader::createWithFilename("creator/scenes/sprites/CreatorSprites.ccreator");

// will create the needed spritesheets + design resolution

// get the scene graph
Scene* scene = reader->getSceneGraph();

// ...and use it


Using it from lua

Register creator binding codes in c++

#include "reader/lua-bindings/creator_reader_bindings.hpp"



Use in lua

local creatorReader = creator.CreatorReader:createWithFilename('creator/CreatorSprites.ccreator')
local scene = creatorReader:getSceneGraph()

How to use ColliderManager

is used to manage collisions. Every scene has an instance of
. You can use it like this to listen collision events:
creator::CreatorReader* reader = creator::CreatorReader::createWithFilename("creator/CreatorSprites.ccreator");

// will create the needed spritesheets + design resolution reader->setup();

// get the scene graph Scene* scene = reader->getSceneGraph();

auto colliderManager = scene->getColliderManager(); colliderManager->registerCollitionCallback([=](creator::Contract::CollisionType type, creator::Collider* collider1, creator::Collider* collider2) { if (type == creator::Contract::CollisionType::ENTER) colliderManager->enableDebugDraw(true);

    if (type == creator::Contract::CollisionType::EXIT)

}, "");

More features of

can refer to the header file.

Use the plugin in your Cocos Creator project

You can install the released version from Creator, or you can copy

Cocos Creator project/packages
, then you will see the plugin in Project -> LuaCPP Support.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.