游戏开发引擎—Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK(三)

合集下载

使用 cocos2d-x 和 Lua 快速开发游戏(1)

使用 cocos2d-x 和 Lua 快速开发游戏(1)

下面就分别叙述不同平台下开发环境的搭建步骤。

搭建 Mac 平台的 HOST 运行环境因为 cocos2d-x 对 Lua 的支持在不断改进中,所以最好从 下载最新 master 分支的cocos2d-x 源代码来编译 HOST。

拿到最新源代码后,⼀一定要记得执行 sudo install-templates-xcode.sh -f 重新安装模版。

准备工作做好后,新建⼀一个 LuaHost 项目,使用 cocos2dx_lua 模版,并设置为在模拟器中运行。

由于 iOS 5.x 的模拟器有⼀一个 bug,会在游戏运行时输出大量无关的警告信息,影响我们调试开发,所以还要在 Xcode 中设置运行目标为 iOS 4.3 模拟器。

接下来,修改 AppDelegate.cpp 文件,将 applicationDidFinishLaunching() 函数中载入 Lua 脚本的代码做⼀一些修改。

改动前:string path = CCFileUtils::fullPathFromRelativePath("hello.lua");pEngine->addSearchPath(path.substr(0, path.find_last_of("/")).c_str()); pEngine->executeScriptFile(path.c_str());改动后:string path = CCFileUtils::fullPathFromRelativePath("scripts/");pEngine->addSearchPath(path.c_str());path = CCFileUtils::fullPathFromRelativePath("scripts/main.lua");CCLOG("\nLOAD LUA FILE: %s\n", path.c_str());pEngine->executeScriptFile(path.c_str());代码改动的目的是让我们可以将 Lua 脚本放置在单独的目录中。

cocos lua 组件父类方法 -回复

cocos lua 组件父类方法 -回复

cocos lua 组件父类方法-回复Cocos Lua 组件父类方法详解Cocos2d-x 是一个跨平台、开源的游戏开发框架,它能够支持游戏开发者同时在多个主流平台上开发游戏,包括Windows、Mac、Linux、iOS 和Android 等。

Cocos2d-x 提供了丰富的功能和强大的工具,使得游戏开发更加容易和高效。

在Cocos2d-x 中使用Lua 作为脚本语言来编写游戏逻辑十分常见,Lua 作为一种轻量级的脚本语言,使得游戏逻辑可以在不重新编译游戏引擎的情况下进行调整和修改,从而大大提高了游戏开发的效率。

在Cocos2d-x 中,组件(Component) 是一种常见的编程模式,用于将游戏对象的功能和属性分离开,使得对象可以以更加灵活和可扩展的方式进行设计。

每个组件都是一个Lua 脚本,可以通过继承父类方法来定义自己的行为和功能。

本文将重点介绍Cocos Lua 中组件父类方法的使用,通过一步一步的解释,帮助读者深入了解这一部分的用法和意义。

1. 组件的定义和继承首先,我们需要了解如何定义一个组件并继承父类方法。

在Cocos2d-x的Lua 中,可以通过如下的方式定义一个组件:local MyComponent = class("MyComponent", function() return ponent:create()end)这段代码中,我们定义了一个名为MyComponent 的组件,并通过ponent:create() 创建了一个父类对象。

接下来,我们可以使用MyComponent 来定义我们自己的方法和属性。

2. 组件的生命周期方法组件的生命周期方法是在特定的时间点被调用的,比如当组件被添加到一个游戏对象时、组件更新时或组件被移除时。

这些方法允许我们在特定的时间点做一些额外的操作。

function MyComponent:ctor()组件被创建时调用endfunction MyComponent:onEnter()组件被添加到游戏对象时调用endfunction MyComponent:onExit()组件从游戏对象中移除时调用endfunction MyComponent:update(dt)组件更新时调用end在上述代码中,ctor() 方法会在组件被创建时调用,我们可以在这里进行一些初始化操作。

quick-cocos2d-x 学习系列之七 drag

quick-cocos2d-x 学习系列之七 drag

quick-cocos2d-x 学习系列之七drag 该例主要是演示drag拖动的一些方法。

主要是两个文件。

一个DragScene.lua场景文件,一个UIDrag.lua。

两个文件的量都不小,那我们来细细品下吧。

1.DragScene该场景定义个四个颜色C1,C2,C3,C4,定义了2个size 90X90和80X80。

Ctor()函数定义了几个变量self.t_data = {}--拖拽对象self.drag = nil--索引self._index = 0self._indexMax = 3调用几个函数:self:initUI()self:_addUI()--加载拖拽1self:loadDrag1()1.1_addUI函数增加一个关闭按钮,一个向前按钮,向后按钮,重播按钮。

这个3个按钮调用的函数都是chaneLayer()函数,根据_index值的不同加载不同的函数。

if self._index == 0thenself:loadDrag1()elseif self._index == 1thenself:loadDrag2()elseif self._index == 2thenself:loadDrag3()elseif self._index == 3thenself:loadDrag4()1.2initUI函数通过函数createEquipmentBox来创建多个放装备的box。

创建一个Label显示“人物”最后创建一个滚动的view如下:self.view = cc.ui.UIScrollView.new({viewRect = cc.rect(0,0, bg:getContentSize().width,bg:getContentSize().height), direction = 1})bg:addChild(self.view);再创建100个用于存放装备的颜色层(LayerColor),在层上加上数字以表示第几个层。

Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]

Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]

Cocos2d-x下Lua调⽤⾃定义C++类和函数的最佳实践[转] Cocos2d-x下Lua调⽤C++这事之所以看起来这么复杂、⽹上所有的⽂档都没讲清楚,是因为存在5个层⾯的知识点:1、在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调⽤的本质2、在Cocos2d-x项⽬⾥,把纯C函数注册进Lua环境,理解Cocos2d-x是怎样创建Lua环境的、以及怎样得到这个环境并继续⾃定义它3、了解为什么要使⽤toLua++来注册C++类4、在纯C++环境下,使⽤toLua++来把⼀个C++类注册进Lua环境,理解toLua++的⽤法5、在Cocos2d-x项⽬⾥,使⽤Cocos2d-x注册⾃⾝的⽅式把⾃定义的C++类注册进Lua环境,理解Cocos2d-x是怎样通过bindings-generator 脚本来封装toLua++的⽤法来节省⼯作量的只有理解了前4层,在最后使⽤bindings-generator脚本的时候⼼⾥才会清清楚楚。

⽽⽹上的⽂档,要么是只解释了第1层,要么是只填鸭式地告诉你第5层怎么⽤bindings-generator脚本,不仅中间重要的知识点⼀概不提,⽰例代码往往也写的不够简洁,这让我这种看见C++就眼晕的⼈理解起来⼤为头疼。

所以接下来的讲解我会对每⼀层知识点逐⼀讲解,⽰例代码也不求完整严谨,⽽是尽量⽤最简洁的⽅式把程序的关键点说明⽩。

第⼀层:纯C环境下,把C函数注册进Lua环境直接看代码⽐啰哩啰嗦讲⼀⼤堆概念要清晰明了的多。

建⽴⼀个a.lua和⼀个a.c⽂件,内容如下,⼀看就明⽩是怎么回事了:a.lua1print(foo(99))a.c12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27#include <lua.h>#include <lualib.h>#include <lauxlib.h>int foo(lua_State *L){int n = lua_tonumber(L, 1); lua_pushnumber(L, n + 1); return1;}int main(){lua_State *L = lua_open(); luaL_openlibs(L);lua_register(L, "foo", foo); luaL_dofile(L, "a.lua");lua_close(L);return0;}怎么样,这代码简单吧?⼀看就明⽩,简单的不能再简单了。

quick-cocos2d-x 学习系列之十四 测试用例

quick-cocos2d-x 学习系列之十四 测试用例

quick-cocos2d-x 学习系列之十四测试用例定义变量,创建13个场景名字local items = {"framework.helper","framework.native","framework.display","framework.crypto","work","framework.luabinding","framework.event","framework.interface","framework.socketTcp","framework.timer","framework.gamestate","framework.transition","framework.nvgdrawnode"}game.createMenu函数用于创建一个UIListView ,并向其中添加所有menu (每个menu的回调都为opentest).在滑动UIListView的时设置变量game.bListViewMove = true(停止滑动时重新设置为false),该值为true时,menu不调用。

game.createSceneClass(name) 用于创建一个class类。

每个类创建两个函数prepare,runTest。

其中prepare函数创建一个Layer,设置触摸,创建一个RETURN按钮点击返回到mainscene,创建一个label显示标题。

如果有参数则显示另一个label.其中runtest函数调用和自己Memu名字同名且多了一个Test单词的函数。

1.framework.helper调用game.createMenu函数增加menu.(这也是为什么该函数放在game.lua文件上的原因了)回调函数为runtest函数。

游戏引擎:cocos游戏开发引擎介绍

游戏引擎:cocos游戏开发引擎介绍

游戏开发引擎笑傲群雄2015年1月8日,享有游戏界“奥斯卡”美誉的“金翎奖”2014年度优秀游戏评选大赛在厦门如期举行。

Cocos游戏斩获多项大奖、全面开花,获得了业界、媒体以及玩家的多重肯定。

Cocos也成了此次大会获奖作品里使用率最高的手游引擎,再度证明了其不俗实力。

游戏引擎Cocos游戏全面开花行业大佬纷纷“表白”此次金翎奖大会上,采用cocos引擎的国内主流游戏厂商一一亮相,腾讯游戏、网易游戏、完美世界、飞鱼科技、游族网络、乐动卓越、雷霆游戏等汇聚一堂,cocos游戏也在移动类游戏奖项里取得了大丰收。

其中,游戏引擎cocos游戏在极具分量的“玩家最喜爱的网络移动游戏”大奖中占比高达70%,继续一如既往的霸榜传说。

《刀塔传奇》《我叫MT》《秦时明月》《雷霆战机》《放开那三国》《魔力宝贝手游》《大掌门》七大cocos精品游戏可谓实至名归。

惊喜不仅如此。

Cocos游戏《刀塔传奇》《暖暖环游世界》《囧西游》《血族》被评为“最佳原创移动游戏”;《捕鱼达人3》《别踩白块儿》《消灭星星官方正版》获得了“玩家最喜爱的单机移动游戏”;《姜饼人酷跑》《天天富翁》赢得“最佳境外移动游戏”;《怪物弹珠》《女神联盟》则众望所归地捧走了“玩家最期待的移动网络游戏”大奖。

(游族网络高级副总裁方师恩)游戏引擎游族网络高级副总裁方师恩在采访时对cocos引擎给予了高度评价:“Cocos引擎效率高,工具完善,实力强,人才积累也有优势。

从上述方面考虑,cocos引擎确实是相当不错的选择。

”方总同时透露,团队一直都在关注cocos引擎配套工具产品如Cocos Studio、AnySDK、Cocos Play的发展,并充满了期待。

(乐动卓越CEO邢山虎)游戏引擎乐动卓越CEO邢山虎更送上了诚挚祝福:“希望cocos 引擎能够在全世界内迅速铺开,让大家都用上我们国人自己研发的引擎。

我尊重每一个做引擎的人,他们是最底层、最默默无闻的英雄!”2015年:Cocos全方位升级增值服务2015年,随着玩家红利的逐渐消失,研发成本的提升,移动游戏将向精品化、中重度趋势发展。

cocos2d-x-lua如何导出自定义类到lua脚本环境

cocos2d-x-lua如何导出自定义类到lua脚本环境

cocos2d-x-lua如何导出⾃定义类到lua脚本环境这篇教程是基于你的⼯程是cocos2d-x-lua的项⽬,我假设你已经完全驾驭cocos-x/samples/Lua/HelloLua⼯程,基本明⽩lua和c++互调的⼀些原理。

我们的⽬的是要在lua中使⽤我们⾃⼰定义的类,并且这个类要导出到我们⾃⼰的module,意思就是说不是追加到LuaCocos2d.cpp⾥⾯,⽬的是为了使我们的module和coco2d的module完全分离,这样以后更新cocos2d-x版本时,对我们的module没影响。

1、先在Classes⽂件夹下创建⼀个类Test(新创建的,名字都是都是⾃⼰定,你可以随意起,下⾯不赘述),代码就简单点,例如#ifndef _TEST_H_#define _TEST_H_class Test{public:Test();~Test(); static int foo(){return 10;} int do(){return 20;}};2、然后在⼯程⽬录创建⼀个⽂件夹叫MyLuaModule,和Classes⽂件夹同级。

3、⾥⾯创建个⽂件MyLuaModule.h,把他拖进⼯程(add to target勾上),写下⼀下代码#ifndef __MY_LUA_MODULE_H_#define __MY_LUA_MODULE_H_extern "C" {#include "tolua++.h"#include "tolua_fix.h"}#include "Test.h" //你新加的类的头⽂件TOLUA_API int tolua_MyLuaModule_open(lua_State* tolua_S); //这个函数我们只要在这⾥先声明就⾏了,到时候有⼯具⾃动给我们⽣成#endif // __MY_LUA_MODULE_H_4、到前⾯创建的MyLuaModule⽬录下,创建⼀个⽂件叫Test.pkg(这个最好和你新加的类名字⼀样),写这个⽂件要遵循⼀些规则:1) enum keeps the same//枚举不变2) remove CC_DLL for the class defines, pay attention to multi inherites//移除掉定义的类的CC_DLL宏(我们⾃定义的类其实没有),注意多重继承3) remove inline keyword for declaration and implementation//移除inline关键字,不管是声明处还是实践处4) remove public protect and private//移除public protect and private5) remove the decalration of class member variable//移除成员变量6) keep static keyword//保留static关键字7) remove memeber functions that declared as private or protected//除掉保护的和私有的成员函数遵循以上7点原则,我们就写下这些注意:最好就是把你这个类的头⽂件⾥的全部复制到pkg⾥,然后移除掉不必要的,剩下就对了class Test{static int foo(); int do(){return 20;}};5、到上⾯创建的MyLuaModule⽬录下,创建⼀个⽂件叫MyLuaModule.pkg,写下⼀下代码$#include "MyLuaModule.h"$pfile "Test.pkg"这个⽂件其实是作为⼀个汇总⽂件,我们就拿这个去⾃动⽣成代码。

quick-cocos2d-x 游戏打包环境搭建

quick-cocos2d-x 游戏打包环境搭建

/tutorial/show?id=1304设置 Quick-Cocos2d-x 在 Windows 下的编译环境Liao Yulei2014-08-12 11:27:396843 次阅读大多数时间,使用player 就可以进行游戏开发。

仅当我们需要在真机上调试,或者需要在player 中加入自己的C++ 代码时,我们才需要配置编译环境。

quick-x-player 使用说明配置编译环境的基本步骤:1.安装Visual Studio 20122.安装Java SDK3.安装最新的Android ADT bundle 和Android NDK4.下载quick-cocos2d-x 源代码5.设置环境变量6.编译quick-x-player proj.win32 工程7.编译LuaJavaBridge 示例,并在Android 真机上进行测试Step 1: 安装Visual Studio 2012从/visualstudio/下载Visual Studio 2012,并进行安装。

支持的版本:•Visual Studio 2012•Visual Studio Express 2012 for Windows Desktop注意:必须使用Windows Vista/7/8 操作系统。

Step 2: 安装Java SDK从/technetwork/java/javase/downloads/ 下载最新版的Java SDK (JDK, 推荐使用32bit 版本),并进行安装。

Step 3: 安装最新的Android ADT bundle 和Android NDK1.从/sdk/下载最新的ADT Bundle for Windows ( 推荐32bit 版本,或者和JDK 匹配的版本)。

2.解压缩adt-bundle-windows-x86-2013.zip3.将目录adt-bundle-windows-x86-2013 改名为android4.将目录android\sdk 改名为android\android-sdk-windows5.从/tools/sdk/ndk/index.html 下载Android NDK r6.解压缩android-ndk-r-windows-x86.zip7.将目录android-ndk-r 移动到android\android-ndk-r最终的目录结构:1 2 3 <PATH_TO>\android\android-ndk-r?<PATH_TO>\android\android-sdk-windows <PATH_TO>\android\eclipse8. 运行android\android-sdk-windows\tools\android.bat, 选中Android SDK 2.2(如果看不到Android SDK 2.2,请设置代理), 然后安装需要的包。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档