COCOS2DX或C++中CC_CONSTRUCTOR_ACCESS有什么作用。

2025-02-25 03:39:08
推荐回答(2个)
回答1:

那quick与cocos2d-x相比到底有什么区别,又有什么加强呢?这篇文章就是答案:为什么会有quickquick和cocos2d-x的差别quick由哪些部分组成应该选择Lua还是JavaScript怎么入门quick为什么会有quickcocos2d-x是一个用C++开发的游戏引擎,其架构设计和API基本上是照搬的cocos2d-iphone(一个用Objective-C的iOS游戏开发引擎)。由于C++对开发人员要求较高,所以网龙科技利用tolua++这个工具,将cocos2d-x的C++接口转为了Lua接口(这种将C++接口导出为Lua接口的库通常称为luabinding)。让开发者可以使用Lua这种简单易懂的脚本语言来编写游戏,从而大大提高开发效率。大概在2012年上半年,我们公司开始使用cocos2d-x+Lua来开发游戏。但是发现当时cocos2d-x对Lua的支持还存在相当多不完善的地方。所以我重写了整个luabinding的支持代码,解决了内存泄露、只能使用全局函数做回调等问题。在cocos2d-x2.0发布后,luabinding又进行了不少改进和完善。截止到cocos2d-x2.1.4,整个luabinding已经可以说是相当稳定了。所以《我是MT》、《大掌门》这些赚钱像印钱的游戏,就纷纷采用cocos2d-x+Lua的解决方案了。可惜cocos2d-x团队从2012年以来一直在强力推广cocos2d-x的JavaScript解决方案,所以在Lua支持上基本上就没有什么大动作了。而从我们使用Lua解决方案的开发商看来,需要luabinding具备更强大的功能,因此这就是我们开发quick的最初原因。quick的目标:降低学习曲线提高易用性创建一个精简、但更容易扩展的架构quick和cocos2d-x的差别虽然cocos2d-xluabinding已经很完善了,但是要开发一个游戏,我们还需要做许多基础工作。将luabinding导出的C++接口重新封装成Lua风格的接口是最基本的工作。重新封装后的接口应该更容易学习和使用,并且一些C++和Lua之间数据格式转换也应该隐藏起来。而这就是quick里首先实现的目标。

回答2:

#ifndef CC_CONSTRUCTOR_ACCESS
#ifdef CC_ENABLE_SCRIPT_BINDING
#define CC_CONSTRUCTOR_ACCESS public
#else
#define CC_CONSTRUCTOR_ACCESS protected
#endif
#endif