quick-cocos2dx 3d开发教程能开发3d游戏吗

『 不要让任何事情成为你不去学习的理由!』
【COCOS2DX-LUA 脚本开发之八】使用quick-cocos2d-x或cocos2dx-LuaProxy的Lua框架实现Lua-Http网络交互!
本站文章均为
原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接:
利用 cocos2dx-LuaProxy 也可以来实现lua版http功能,具体请移步到:
Cocos2dx 为我们封装了在cocos2dx中http的网络框架,其文件在cocos2dx引擎包的/Users/Himi/Documents/cocos2d-2.1rc0-x-2.1.2-hotfix/extensions/network 文件下的 HttpClient、HttpRequest 、HttpResponse如下图:
至于如何使用,Himi这里不再详细叙述,大家可以看引擎提供的例子中自己阅读学习(TestCpp项目中)
有童鞋就会问了,既然cocos2dx都已经为我们封装好了,那还讲什么? – -。
嗯,是的,我们可以通过将这几个类通过tolua++工具binding到lua中供我们来使用,但是!一般我们访问服务器时,都希望数据返回时调用我们的一个方法进行对数据的处理,那么使用CCHttpClient 我们可以通过HttpRequest请求包的时候,对其进行设置其回调函数,如下:
inline void setResponseCallback(CCObject* pTarget, SEL_CallFuncND pSelector)
_pTarget = pT
_pSelector = pS
if (_pTarget)
_pTarget-&retain();
12345678910
&&inline void setResponseCallback(CCObject* pTarget, SEL_CallFuncND pSelector)&&&&{&&&&&&&&_pTarget = pTarget;&&&&&&&&_pSelector = pSelector;&&&&&&&&&if (_pTarget)&&&&&&&&{&&&&&&&&&&&&_pTarget->retain();&&&&&&&&}&&&&}
大家可以看到此函数需要一个SEL_CallFuncND的参数,而SEL_CallFuncND是个宏定义,并且cocos2dx binding到Lua的LuaCocos2d.cpp 中是没有将SEL_CallFuncND进行binding的。
当然大家如果可以将lua调用setResponseCallback的办法解决,那么则可以直接使用cocos2dx引擎包下的network即可。
另外我们可以通过一些别的办法进行解决,当然以下内容也是我们本篇所要重点介绍的!
首先还是继续介绍下quick-cocos2d-x框架,对于quick-cocos2d-x 其实在之前简单的介绍了,它是一个基于cocos2d-x lua进行扩展的一个框架,使用quick-cocos2d-x 能让使用cocos2dx-lua项目开发者,更快捷的,更方便的开发!
需要注意的是quick-cocos2d-x的git可下载的zip是不全的,童鞋们需要通过git 来clone下来。500+MB
(Himi与quick-cocos2d-x作者交流中,在下个版本有可能quick-cocos2d-x会嵌入cocos2dx引擎中)
虚的不多说,本篇则是Himi从quick-cocos2d-x 中提取出来的一个Http框架供Lua使用,下面简单介绍下:
(以下对于一些qucik-cocos2d-x中的http的框架封装和如何修改的不做解释,直接介绍如何使用!)
首先下载改版后的c++代码以及Himi对应封装好的pkg文件包 LuaHTTP.zip :
下载地址:
解压后将HNetWork文件夹并将其加入你们的项目, 解压后如下图:
然后将CCHTTPRequest.pkg 通过cocos2dx 引擎的tolua++ 工具binding到你项目的LuaCocos2d.cpp中(别忘记将这个pkg添加到Cocos2d.pkg中),并且在LuaCocos2d.h中添加:
#include "CCHTTPRequest.h"
#include "CCHTTPRequest.h"
然后,让Xcode,Build 下!OK 编译成功!
然后我们在lua中书写测试代码:
local url = ""
local request =CCHTTPRequest:createWithUrlLua(
function(event)
local request = event.request
print("state:"..request:getState().."
code:"..request:getResponseStatusCode())
local parseStr =
request:getResponseString()
print(parseStr)
kCCHTTPRequestMethodGET)
request:start()
1234567891011121314
&&&&&&&&&& --&&GET&&&&&&&&local url = ""&&&&&&&&local request =CCHTTPRequest:createWithUrlLua(&&&&&&&&&function(event)&&&&&&&&&&&&local request = event.request&&&&&&&&&&&&print("state:"..request:getState().."&&code:"..request:getResponseStatusCode())&&&&&&&&&&&&local parseStr =&&request:getResponseString()&&&&&&&&&&&&print(parseStr)&&&&&&&&&end, &&&&&&&&url,&&&&&&&&kCCHTTPRequestMethodGET)&&&&&&&&request:start()
可能大家直接看上面不太清晰,OK,先看对应调用的CCHTTPRequest.h中的createWithUrlLua函数:
static CCHTTPRequest* createWithUrlLua(LUA_FUNCTION listener,
const char* url,
int method = kCCHTTPRequestMethodGET);
static CCHTTPRequest* createWithUrlLua(LUA_FUNCTION listener,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& const char* url,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& int method = kCCHTTPRequestMethodGET);
函数第一个参数: lua函数 (用于接受到server数据后的回调用户处理数据)
函数第二个参数: 获取数据的url地址
函数第三个参数: http交互方式
GET or POST ,如下定义:
#define kCCHTTPRequestMethodGET
#define kCCHTTPRequestMethodPOST 1
看完以上的理解,那么反回头看lua的那几行测试代码,我想你也该很清楚了!
运行截图:
控制台输出的打印:
ok, 本篇就到这里!有任何问题,请及时留言讨论。
? 【Unreal Engine 】 ? 【React Native】 ? 【Cocos Creator】? 【Cocos2dx】? 【C2dx-Lua】
Himi’s Book
小广告先森
小广告先森游戏开发引擎―Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK(三)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
游戏开发引擎―Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK(三)
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢人生最纠结的事,莫过于有选择&&&&
cocos2dx和unity3d从某种意义上讲,都很不错。但当面对特定需求以及团队情况的时候,总是能分出高下的。
假设,目标游戏是一款类似 刀塔传奇 的游戏
我们先分析一下游戏特点
1、这是一款2D游戏
2、它没有强烈的玩家互动,也没有玩家互见
3、它适合使用HTTP与服务器进行通信
4、为了资源较小,使用2D骨骼动画
5、为了更好的用户体验,我们需要支持游戏内更新
对于以上5点来说,两个引擎都是可以做到的&&
那针对此目标,我们来说如果使用U3D,应该如何做。
如果使用U3D,那U3D自身强大的3D功能将被无视。而由于U3D自带的2D简直是弱爆了。于是,我们一般采用3D场景+正交相机的方式来实现2D效果。 这些都是可以的。 只是说Mono起步价就是8MB(Mono框架本身的开销就不谈了)。
界面方面,采用NGUI吧。这些都是不需要思考的。
但对于2D骨骼动画来说,较好的选择是Spine。 但目前的美术外包团队中对Spine这个工具较熟悉的,为数不多。 而Dragon Bones,只有一个弱弱的Unity3d支持, 在GIT上可以找到。
对于游戏内更新问题,只能使用其它解释型脚本了, iOS上是不能更新可执行代码的。 LUA可以说是不二的选择。&
这样看来,使用U3D面临的问题就是 能否找到一个好的美术团队使用Spine做出2D骨骼动画&& 在U3D框架的基础上,我们还需要再封装一次LUA,以满足动态更新。 安装包相比cocos2dx来说,多了8MB。 一套U3D授权为5000美刀
来说说cocos2dx
cocos2dx使用C++开发,同时官方支持的导出脚本为LUA,JS。 因此,自动更新功能是没有问题的。
cocos2dx有一个cocostudio和cocosbuilder工具可以拿来做UI。 虽然不太便服,但忍忍是可以接受的。
cocos2dx对Dragon Bones的骨骼动画支持较好,不用担心美术问题
cocos2dx是免费的,少了5000美刀。
cocos2dx安装包要小8MB
cocos2dx有这方面的成功案例
虽然一直期待能够使用U3D作为惯穿一切的解决方案。但目前面对这样的2D需求的时候。 个人还是觉得选择cocos2dx较为科学。
阅读(...) 评论()

我要回帖

更多关于 quickcocos2dx 的文章

 

随机推荐