加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Cocos构建一个完整项目

发布时间:2020-12-14 16:57:35 所属栏目:百科 来源:网络整理
导读:http://www.cocoachina.com/bbs/read.php?tid-284709.html 原文 零、 简介: Cocos 是触控科技推出的游戏开发一站式解决方案,包含了从新建 立项、游戏制作、到打包上线的全套流程 。开发者可以通过 cocos 快速生成代码、编辑资源和动画,最终输出适合于多个

http://www.cocoachina.com/bbs/read.php?tid-284709.html 原文

零、简介:
Cocos 是触控科技推出的游戏开发一站式解决方案,包含了从新建 立项、游戏制作、到打包上线的全套流程 。开发者可以通过 cocos 快速生成代码、编辑资源和动画,最终输出适合于多个平台的游戏产品。
Cocos 的主要产品有Cocos Studio、Cocos2d-x(Cocos Framework)、Cocos Code IDE。

Cocos2d-x Cocos2d-x 是基于OpenGL ES的跨平台开源引擎,现为全球占有率第一的手机游戏引擎,被媒体成为“千万级手游摇篮”。游戏开发快速、简易、功能强大。Cocos2d-x核心优势在于允许开发人员利用C++、Lua及Javascript来进行跨平台部署,覆盖平台包括iOS、Android、WindowsPhone、黑莓(BlackBerry)及Tizen等等,省事省力省成本。
Cocos Studio 是Cocos2d-x引擎配套的跨平台游戏开发工具,帮助开发者快速构建游戏场景、编辑UI、编辑动画等游戏资源,支持第三方的资源导入。支持多种类型游戏的编辑,满足不同开发者和公司的开发需求,并且上手容易,简单易懂,同时提供了丰富的技术支持和开发资源。
Cocos Code IDE Cocos CodeIDE 是一个基于 Eclipse 的跨平台 IDE,专门为 Cocos2d-x Lua & JavaScript 开发人员准备,通过IDE 你可以方便的创建游戏工程、编写并且支持在不同平台上调试代码、实时查看代码被改变后的效果,最终直接发布成一个可上架的安装包。
关于本文:本文期望通过一个简单的示例,演示Cocos的上述三大产品的使用方法。期望读者阅读完本文之后能够使用Cocos构建一个简单的项目。

一、安装:
首先下载并安装Cocos的安装包,下载地址: http://cn.cocos2d-x.org/download/
安装完成后,打开启动器:


启动器
启动器的界面如下:


Cocos 启动器主界面
启动器是Cocos的入口,具有如下功能:
项目页面:用于项目管理,包含打开旧项目和创建新项目功能。
示例页面:这里可以打开CocosStudio的一些示例工程。
教程页面:包含Cocos的一些教程。
插件页面:Cocos的插件商店,目前正在逐步丰富。
下载页面:下载中或已经下载的插件列表。
反馈页面:对于Cocos项目的意见、建议或者BUG都可以在这里提交,有问题也可以到这里咨询。每天都有相关人员来跟进处理。
配套的Cocos Framework和Cocos Code IDE两个产品可以在Cocos插件商店中找到,本篇文章使用的Cocos系列产品的版本分别是Cocos2.1 + Cocos Framework3.4 + Cocos Code IDE 1.2.0。
二、创建项目
打开Cocos启动器,在项目页, 点击“新建一个项目”弹出新建项目向导:

新建项目向导
支持创建空白资源项目和空白完整项目这两种项目。
空白资源项目即创建出的项目不包含Cocos Framework,只能编辑和导出资源,一般是期望美术项目和程序项目分离时使用。
空白完整项目即则含有Cocos Framework。可以在一个项目中同时完成美术和代码的编辑。 PS:目前来说(cocos2.1)Framework可以认为是帮你编译好的2d-x二进制版本,未来会拆分framework来提供让你配置项目功能的能力, 可以任意添加、删除任何 不想要的模块。若你希望能够有2d-x的源码,可以创建空白资源项目,然后用2d-x创建的项目来加载Cocos制作的资源。
选择“空白完整项目”,点击下一步,设置项目信息:

设置项目信息
这里可以设置项目名称、语言类型和屏幕方向等基本信息。本篇教程的项目信息设置如上。
项目语言选择:
三种语言各有优势。Lua语言简单易学,而且灵活,运行性能也很好;JavaScript语言支持web平台,可以利用web平台优势,一次发布到所有终端;C++项目适用于对性能要求极高的游戏。同时,lua和JavaScript支持热更新,不必像C++一样,当项目发布之后,如果需要更新代码就得重新打包提交审核。
简单起见,这里使用lua语言。
三、编辑界面
项目创建完成,进入CocosStudio编辑器,编辑器的界面分布如下:

编辑器界面
关于这些面板,可以在这里找到相关的介绍:
http://cn.cocos2d-x.org/article/index?type=Cocos%20Studio&url=/doc/cocos-docs-master/manual/studio/v2/chapter1/interface/about/zh.md
导入资源:
导入资源的方法在手册里边也有介绍:
http://cn.cocos2d-x.org/article/index?type=Cocos%20Studio&url=/doc/cocos-docs-master/manual/studio/v2/chapter1/resources-workflow/zh.md
这个示例项目使用的资源下载链接为(是此前 的一篇教程中 的资源):
http://cn.cocos2d-x.org/uploads/20141022/1413967529391837.zip
我们将这里边的资源导入,结果如下:

导入的资源
我们使用默认的HelloWorld界面作为主界面。
接下来我们为主界面添加一个播放按钮,作为进入游戏界面的入口:
添加按钮
调整拖放出来的按钮及文字的大小,结果如下:

按钮文本和文本颜色

按钮尺寸
这里点击“重置尺寸”会将按钮设置为按钮的“正常状态”图片的尺寸。
另外按钮初始状态是开启九宫格的,这里我取消了九宫格。
九宫格在属性面板中,使用下面这个面板进行设置:

九宫格
关于九宫格,用户手册中有详细介绍:
http://cn.cocos2d-x.org/article/index?type=Cocos%20Studio&url=/doc/cocos-docs-master/manual/studio/v2/chapter2/properties/scale-9-slice/zh.md
其实大部分功能在用户手册都有详尽介绍了,因而如果我们想了解某个功能,只需要上去上述手册中搜索即可。
然后新建一个?*****募??魑蜗方缑妗P陆ㄎ募?梢酝ü一髯试疵姘妫?诘?龅牟说ブ醒≡瘛靶陆ㄎ募?毖∠睿?蛘甙础癈trl+N”快捷键:

新建文件
新建文件时会弹出一个向导:

新建文件向导
这里可以设置文件类型,总共有场景、图层、节点和合图四种类型。
关于这几种文件的区别我们可以看看用户手册:
http://cn.cocos2d-x.org/article/index?type=Cocos%20Studio&url=/doc/cocos-docs-master/manual/studio/v2/chapter2/add-resources/new-file/zh.md 对于合图文件除了手册中介绍的价值外,还可以提高游戏运行时的渲染性能。但要注意两点:1.制作的合图不要留大量的空白区域,这会导致加载后浪费内存空间;2.尽量不要把不同场景的图片放到一起,除非不同这些图片是不同场景共用的。
我们创建一个?*****募???莆?癙layScene”,“PlayScene”的编辑方法跟下面这篇《围住乖乖兔》的教程差不多。这篇教程写得很好,“PlayScene”的编辑大家看这篇教程就行,连接如下:
http://cn.cocos2d-x.org/tutorial/show?id=1651
不过我们需要对上边这篇教程编辑的界面做两个调整:
1. 原文中使用精灵控件来放置石头,但这里精灵被我替换成图片控件,原因后边说明。
2. 为了能够方便地在程序中获取到某个石头对应的图片控件,这里对各个石头按如下方式进行命名:


石头命名规则
关于为何使用图片控件而不用精灵控件的原因:在cocos framework中图片控件继承自Widget类型,一般这种类型的对象被称为控件。控件自带了一些方便监听交互事件的接口,其中图片能够监听触摸事件,这里为了方便监听石头的点击消息使用了图片控件来显示石头。
关于GUI控件能够监听的更多事件类型可以查看此篇文章:
http://www.cocoachina.com/bbs/read.php?tid=270804&page=1&toread=1#tpc 在游戏结束时,给个战绩面板,告知玩家这一局的结果:
新建一个文件,选图层类型,名称为layer大小300*300:


新建图层文件
使用精灵控件和文本控件、FNT字体控件,组织一个这样的界面:


结算界面
然后将这个界面嵌套到刚新建的PlayScene中,命名为“settlement”。嵌套的操作方法:打开期望接受嵌套对象的csd文件(先称为A)然后将资源面版的csd文件拖放到A的渲染区即可。
然后我们为这个面板编辑一个弹出动画:
添加动画主要利用时间轴面板进行。添加动画的方式有两种:1是用“添加帧”操作,2是使用自动记录帧功能。
一般使用自动记录帧来操作,因为现在动画的各个属性的时间轴是分开的,如下:


展开的动画属性列表
如果使用添加帧操作,则只能添加已有属性的帧,而使用自动记录帧则没有这个限制。
OK ,首先打开自动记录帧,选择settlement对象,点击settlement所在时间轴的第一帧,在属性面板修改透明度为0,再选择时间轴的第30帧将透明度设置为百分之百,最终得到如下结果:


编辑动画
点控件树面板上方的播放按钮即可预览到效果。
四、发布
编辑好界面后就可以发布资源了,发布是指将我们编辑好的界面转换成CocosFramework能够解析的数据。
发布之前我们可以在“项目设置”中对发布进行一些配置:点开菜单栏的“编辑”-“项目设置”,打开项目设置:


打开项目设置
在发布设置界面如下,这里可以配置发布内容、路径和数据格式。

发布设置
发布内容指发布数据时导出哪些内容,若选择发布资源与项目文件,则导出所有csb文件和使用到的资源。若选择仅发布项目文件,则仅导出csb文件。
数据格式:各数据格式如的优点如图中所述。这里我们选择csb格式。
发布有三个不同的发布方法:“发布资源”、“发布到Cocos Code IDE”和“发布到Visual Studio/XCODE”。对于“发布到XXX”的选项我们可以理解为发布并同时打开对应的IDE工具。


发布的资源
发布之后,就可以把发布出来的资源交给程序加载出来,添加游戏逻辑啦。
五、代码
这里使用CocosCode IDE来进行代码部分的编辑。
Cocos Code IDE 作为Cocos系列产品之一,主要提供了对cocos2d-js和cocos2d-lua两大脚本引擎的代码编写、调试、打包功能。
代码编辑:主要基于eclipse上扩展了代码提示方面的功能,包括API、框架甚至用户自己写的接口,都能有详细的提示。
调试:提供完整的断点调试功能及远程调试能力。其远程调试功能十分强大,能够在PC上调试IOS、Android平台上运行的项目,配合VS/XCODE还能够同时调试同一项目的C++代码和脚本代码。
打包:使用IDE仅需要几步配置就可以完成打包到手机平台上的安装包。
Cocos Code IDE界面:
的界面如下所示:


Cocos Code IDE
工程视图:包含此前创建的Cocos完整项目,比如我们刚创建的Rabbit项目。
编辑区:不用多说,就是编辑代码的地方。
大纲:当前文件中的对象、函数索引。
控制台:用于输出各种信息,编译错误、运行错误还有你自己调用print、log函数时的输出都会显示在这里,这些信息对调试代码是十分重要的。很多时候我们都可以在这里直接看出程序哪里出错了,然后提出可能的应对方案。

关于创建的lua项目:
Cocos2d-lua 目前已经被quick团队接管,目前新建的lua项目都会带上一个quick的框架,如果你想学习这个框架可以参考下面这个链接:
http://cn.cocos2d-x.org/tutorial/show?id=2150
这个是quick团队的廖大神主讲的《两小时学会用Cocos2d-lua开发游戏》视频教程。主要介绍使用cocos2d-lua快速开发一个捏虫子的小游戏。里边有介绍quick的MVC框架,这篇教程将会使用到这个框架。
从main.lua开始:
Main.lua 是Cocos2d-lua项目的默认入口,即项目启动时,首先执行这个文件。(我们也可以修改config.json文件的entry字段来配置入口文件)
main.lua 中进行了几项操作:
a) 把res和src两个文件夹添加到文件搜索路径。
b) 读取Config.lua加载lua配置信息。执行Cocos.init,这个文件根据配置信息初始化Cocos2d-lua框架(require加载lua模块时必须使用”.”来代替路径中的”/”符号)
c) 创建App文件夹中的App对象,调用run函数,run函数可以有参数,用于配置第一个进入的场景,默认是MainScene。从App对象开始才是是码农朋友们的劳动场所,一般从这里开始添加游戏逻辑。
Config.lua Config.lua 提供了几个字段用于配置项目,可以修改这些字段的值来达到某些效果:
DEBUG 字段:设置输出调试信息的等级,0为无,1为少量的,2为完全的。其实就是控制几个不同的print函数是否输出。
CC_USE_FRAMEWORK 字段:设置是否使用quick框架,包括MVC框架。
CC_SHOW_FPS 字段:是否显示FPS等显卡相关信息。
CC_DISABLE_GLOBAL 字段:是否允许定义全局变量,具体可看此篇说明:
http://cocoslua.cn/2014/12/disable-global-var/ CC_DESIGN_RESOLUTION 字段:设置在不同分辨率下,游戏分辨率的调整策略,具体可参考此篇教程: http://cn.cocos2d-x.org/tutorial/show?id=1434 在执行cocos/ init.lua 的时候,就会根据上述配置信息,来配置项目。
Cocos-Lua项目自带的MVC框架
自带的MVC框架的基础代码在创建的项目的src/package/mvc中可以找到。这里边有三个文件AppBase.lua、init.lua、ViewBase.lua。
AppBase :算是MVC框架的管理角色,主要管理View对象,比如提供了一些接口用于切换View。
ViewBase.lua :继承于2d-x的Node类型。但其中的ShowWIthScene接口会创建一个Scene文件,把View自身添加到这个Scene上,并命令全局显示这个Scene。
Init.lua :不用说,看字面就知道,这个用于初始化MVC框架。
基于MVC框架开始给我们的游戏添加逻辑:
MVC 框架填充逻辑的地方默认在app文件夹中(res/app或者src/app)。
默认会在这个文件夹下生成MyApp.lua和Views文件夹,我们应该在views中为每个游戏场景添加一个继承自ViewBase的类,加载CocosStudio编辑出来的界面,处理交互、动画等界面逻辑,并调用models中的类处理游戏逻辑;此外我们还需要在这个文件夹下添加一个model文件夹,用来填写游戏的逻辑代码。


MVC 具体游戏逻辑的文件结构
在MyApp.lua中,我们可以重写onCreate函数,在这里添加进入第一个游戏界面之前的处理逻辑,我们的示例游戏比较简单,不需要在这里做什么特殊处理。在onCreate执行完之后,紧接着会执行AppBase的run函数,这个函数在Main.lua中调用,这个函数有一个参数,用来决定进入的第一个View,如果不填写这个参数,默认会进入MainScene.lua文件。
主界面: MainScene.lua 的代码如下:
--MainScene.lua
-- 创建一个MainScne类,继承ViewBase对象
local MainScene =class( "MainScene" ,cc.load( "mvc" ).ViewBase)
重载onCreate函数 function :onCreate()
-- 加载CocosStudio编辑出来的MainScene.csb
local root =cc.CSLoader:createNode( "MainScene.csb" )
:addTo( self )
function onPlay ()
-- 进入PlayScene,使用闭包catch self变量。
self :getApp():enterScene( "PlayScene" )
end
获取名称为PlayButton的按钮,然后添加这个按钮在接受到点击时的处理代码
:getChildByName( "PlayButton" :addClickEventListener( )
end
return MainScene
大部分逻辑上述代码中的注释都有写明。
然后点击Code IDE工具栏的运行按钮:

接着就可以看到我们的MainScene界面啦:

主界面
游戏界面:
点击Play按钮,会触发上述代码中的onPlay函数。然后执行下面这句代码:
self :getApp():enterScene( "PlayScene" )
如上:先通过ViewBase的getApp接口获取App对象,然后执行app的enterScene接口,这个接口会根据参数去app/views文件夹下找PlayScene.lua这个文件并加载出来。当然这个文件里边的类必须继承自ViewBase,不继承ViewBase就不能用enterScene加载。
PlayScene.lua 的部分代码如下:
1. 逻辑代码的加载:
GameLogital =import( "..models.GameLogital" MVC 框架没有帮我们自动加载app/models里边的lua代码,需要我们自己去手动加载这些东西。
注:这里使用到import接口而不是require,import是quick框架提供的接口,相比require这个接口使用的是相对路径。
2. 方便的接口:
.root =cc.CSLoader:createNode( " PlayScene.csb" ):addTo( self) 注意最后的addTo函数,这些函数是quick提供的,在调用完会返回对象本身,所以我们可以像下面这样使用,不需要重复地去写变量名:
cc.Sprite:create(texture):move(x,y):rotate(r):addTo(p)
这些函数可以在src/cocos/framework/extends/下找到。
3. 创建,添加动画:
tlAct =cc.CSLoader:createTimeline( "PlayScene.csb" ) .root:runAction( self.act_tag = tlAct:getTag()-- 用于后续获取动画 首先使用cc.CSLoader:createTimeline创建动画,然后使用runAction把这个动画挂载到加载出来的节点上。
4. 播放动画:
local tlAct =self.root:getActionByTag(self.act_tag) :gotoFrameAndPlay( 0 false 先通过tag获取动画,如上。然后调用gotoFrameAndPlay接口,这个接口有三个重载:
gotoFrameAndPlay(begin,end,loop)
gotoFrameAndPlay(begin)
参数解释:
Begin :从第几帧开始播放
End: 播放到第几帧
Loop :是否循环


游戏界面
如何知道这些接口?
可以在论坛找cocos2d-x的api文档,一般在这个帖子更新(记得点个赞支持下作者哦):
http://www.cocoachina.com/bbs/read.php?tid-199055-keyword-API.html 不过对于新手,可能直接看例子会更有效率些。我们可以去官方下载一个cocos2d-x的引擎源码。在下载下来的源码里边找到一个build文件夹,里边有一些解决方案工程文件,用相关的IDE工具编译,调试运行里边的test工程。可以从这里看到cocos2d-x几乎所有功能的演示,这些演示的代码在源码里边的test文件夹可以找到。记得不要抄里边的代码,搞懂每一句代码的意思会让你成长得更快的。


test工程列表

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读