cocos2d-x为什么大量使用宏定义函数,而不选择使用模板?

先有cocos2d-python, 之后移植到iOS上面,成了cocos2d-iphone。cocos2d-iphone使用objc编写。

随着iOS的流行,cocos2d-iphone在iOS的游戏开发中,变得流行。cocos2dx是在cocos2d-iphone流行之后,采用C++重新编写的,x表示cross, 就是cross platform(跨平台)的意思。

在3.0之前,cocos2dx只是在在cocos2d-iphone后面跟随模仿,所有的接口,类名,设计跟cocos2d-iphone一模一样,只是使用C++来模仿objc的特性。CCObject, CCArray, retain, release, autorelease 等等概念,其实从objc中来的。

在3.0之前,cocos2dx的代码质量从C++的角度来看,客气点说,是不怎么样。不客气说,就是糟糕。但因为它解决了用户跨平台的迫切需求,并且也算容易使用,所以cocos2dx慢慢变得流行。

为什么大量使用宏定义函数,而不选择使用模板?简单回答,就是因为cocos2dx需要模仿cocos2d-iphone, 也就需要使用C++来模仿objc的特性,有些在objc中很自然的特性,在C++中没有对应的,也只好使用宏来模仿。而objc并没有模板,在cocos2dx中,也不能使用模板,一旦使用模板,相比宏,更容易引起cocos2dx和cocos2d-iphone接口的分化。模板也算C++中比较高级的特性了,从objc转过来的cocos2d-iphone的程序员,也难以掌握模板。

那为什么cocos2dx一定要跟随cocos2d-iphone呢?因为在早期,cocos2d-iphone使用的人数远远比cocos2dx多。cocos2d-iphone的势大,很多开发iOS游戏的人更熟悉cocos2d-iphone的接口。并且已经有些游戏采用cocos2d-iphone编写了,跨平台是后来的需求。cocos2dx设计跟随cocos2d-iphone,游戏开发者迁移到cocos2dx的代价更少,接口的学习成本会很少。假如那时,cocos2dx自己设计一套接口,就算技术更好,代码质量更好,也很难像今天那样流行。当然了,接口自己设计一套,也就不能称呼成cocos2dx了。

就算是今天,也会有很多开源的2D引擎,技术上比cocos2dx好,代码质量也比cocos2dx好。但就没有cocos2dx这样流行。市场从来不是简单选择技术最好的。

随着cocos2dx变得越来越流行,cocos2dx跟cocos2d-iphone的地位反过来了,现在的开发者更熟悉cocos2dx。这个时候,cocos2dx就可以放开手脚来重新设计。3.0之后,它的代码更加符合C++的习惯,而并非仅仅模仿objc。可以说,3.0是个分界点,从那个时候开始,cocos2dx才勉强算是一个独立的2D引擎,之前只是附庸状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值