那玩家一定会掏出准备已久的西瓜刀~) 其实Cocos2d-x引擎早已为我们开发者封装好了多种数据存储的类或者方法,包括简单信息的存储,文件的读写,SQLite数据库和RAR格式的压缩文件的读取等等。 二、Cocos2dx中的文件读写 1 bool HelloWorld::init() 2 { 3 if ( ! 本篇博客所有代码已经同步到Github: UserDefault类使用:https://github.com/XINCGer/Cocos2d-X_Tools/tree/master/Cocos2d-x_Demo /LocalDataSave 文件读写操作:https://github.com/XINCGer/Cocos2d-X_Tools/tree/master/Cocos2d-x_Demo/FileSystemInCocos2dx 下一篇博客,我们将学习Cocos2d-X中的弱联网技术。
Cocos2D-iPhone内置的各种动作,画面变更效果。 以上为游戏的主要内部架构,是我们理解游戏编程的基础。这与我们通常的面向功能的软件编程有很大的区别。 Cocos2d-iphone的编程模型 Cocos2d-iPhone游戏引擎也是基于上述理念设计的,我们在此就这个图像引擎做一个整体性的概述。 1) 内存数据。 至此,我们可以看出无论读者在Cocos2d中设置多少定时回调逻辑,其实并没有增加系统整体开销。 所有的定时调用逻辑,无论是系统的Action还是游戏开发的逻辑最终都是在统一的调用中实现的:Scheduler 类的tick方法。 通过以上分析,我希望读者对Cocos2d-iPhone游戏引擎的编程架构有一个清晰地整体性了解: 1) Cocos2d-iPhone提供不同的更新实现机制:NSTimer和While循环。
在上一篇博客中,我们一起学习了如何在Cocos2d-x中存储数据和读取信息,本篇博客我们将一起讨论和数据存储同样重要的联网技术。 二、通过HTTP协议获取网站信息 在Cocos2d-x中使用HTTP协议传输数据的话,需要用到第三方库CURL。 开发环境配置完了,下面开始写代码了,照例还是先上一下代码和效果图然后再解释: 1 bool HelloWorld::init() 2 { 3 if (! 在Cocos2d-x中通过GET\POST发送信息的方法也和web编程中的大同小异,下面我们就来了解一下。 地址:https://github.com/XINCGer/Cocos2d-X_Tools/tree/master/Cocos2d-x_Demo/WeakNetworking 好了,关于Cocos2d-x
因为公司的业务需求,近期学习了CocosCreator这款游戏引擎的开发,也基于此上线了一款游戏,因此写这系列文章记录一下我从入门到项目发布的学习过程。 所以第一篇文章我主要会介绍一下我从web端开发转向游戏开发这个过程中,我对cocos的工作流程的一些认识。 UI开发 和web端的开发不一样,cocos的UI是不用写样式的,界面上所有的元素都是用图片堆积起来的,对我来说这个转变过程挺有意思的,把样式编写去掉了可以省掉我们一些布局的时间,我在开发项目过程中也发现了一些比较好的实践方法 应该会有部分的前端像我一样是做web开发的,以前没有接触过游戏开发,那要实现这个需求就一脸懵逼,总不能让我用一个个sprite去代替吧。 Sketch 我司的设计工具,之前做web端开发的时候我和设计师的交付都是通过sketch的导出的网页或者通过蓝湖,但是做了游戏项目之后,我发现开发这边对稿子的调整还是挺多的,当稿子已经基本交付过来之后
一个菜单是游戏中的一个基本要素,quick在里面menuItem有两个包。一个是图片菜单。一个文本菜单。 , listener = onClicked, x = display.cx, y = display.height*0.3, tag = 2 }) 和Cocos2dx一样 local menu = ui.newMenu({item1, item2}) self:addChild(menu) 这样就加入完毕了,回调函数咱们还没说。我们再看下。 then print("item2 clicked") end end 因为这个function是局部(local)的,所以一定要放在menuItem之前。 当然也能够直接在listener内部就写好回调函数,再创建一个item, local item3 = ui.newTTFLabelMenuItem({ text = "MenuItem2",
本篇博客讲解: 1.第一个Cocos2d-x游戏 第一个Cocos2d-x游戏 创建工程 cocos工具: 就是这个,看图 image.png 命令工具cocos实现,cocos 工具其实是cocos2d团队自己开发的。 libcocos2d就是所有cocos2d的源码都是放在这个工程里面的,这个是和项目根目录cocos2d这个文件夹对应的 运行工程:(第一次编译可能需要较长时间) image.png 左下角的一些数字 __ #include "cocos2d.h" class HelloWorld : public cocos2d::Layer { public: static cocos2d::Scene ,一般进行游戏的初始化,比如游戏的导演啊,场景啊等在这里进行初始化。
所以我们创建一个文本能够使用这种代码, function MyScene:ctor() local labelBMFont = ui.newBMFontLabel({ text = "Hello Cocos2dx 既然前面说了quick是对cocos2d-x 原生lua的再封装,咱们就再看看这个newBMFontLabel是怎样实现的。贴一下ui中的代码。 display.RIGHT_CENTER) else label:align(display.CENTER) end return label end 能够看到还是使用了cocos2dx 格式的字体创建, ui.newTTFLabelWithShadow(params) ui.newTTFLabelWithOutline(params) 这两个各自是带有阴影和描边參数的TTF字体,cocos2dx 写个效果出来看看 local labelTTF = ui.newTTFLabelWithOutline({ text = "Hello Cocos2dx", size = 50, color
无论是开发2D还是开发3D游戏,首先必须弄清楚坐标系的概念。在Cocos2d-x中,需要了解的有OpenGL坐标系、世界坐标系和节点坐标系。 3.世界坐标系 世界坐标系又称绝对坐标系,是游戏开发中的概念,它建立了描述其他坐标系所需要的参考标准。我们可以用世界坐标系来描述其他坐标系的位置。 5.Vec2和Point 在Cocos2d-x3.0版本中,使用Point来表示一个坐标点,Point中包含了一个x和一个y坐标,都是浮点数。 从Cocos2d-x 3.1版本开始,使用Vec2来代替Point,而Point作为typedef存在,在Vec2.h源代码中是这样定义的: typedef Vec2 Point; 6.锚点 锚点是 了解并掌握了以上几种最基本的坐标系知识,才能高效快捷的使用Cocos2d-x开发游戏。
自从Cocos2d-x3.0开始,Cocos2dx就正式的使用了C++11标准.C++11简洁方便的特性使程序的可拓展性和可维护性大大提高,也提高了代码的书写速度。 下面我们就来一起学习一下Cocos2d-x开发中那些不得不了解的C++11知识。 1.初始化列表 POD结构或者数组根据成员在结构内定义的顺序,可以使用初始化列表来进行初始化以简化代码。 = p1; *p2 = 123; //p2被销毁,相当于对int内存块的一次release,但是由于p1还指向该内存,引用计数器不为0,因此不会释放 } 1.[ ]可以没有任何参数,这种情况下不传入外部参数 2. = [=]()->int {return b + d; }; func0(); //b,c,d分别为1,2,3 c=func1(); //c=6 func2();
游戏存档功能能够保存游戏中数据。让玩家游戏能够延续。 单机游戏更为重要。 CCUserDefault::sharedUserDefault()->getStringForKey("string"); CCLOG("str1: %s", str1.c_str()); float f2 =CCUserDefault::sharedUserDefault()->getFloatForKey("float"); CCLOG("f2: %f", f2); 发布者:全栈程序员栈长,转载请注明出处
图片来自网络 关于cocos2d 3.5 新版的默认项目 使用官方的安装器cocos2d Installer创建的工程后,默认的cocos2d-ext路径下是不完整的. cocos2d-ext 官方的github获取的开源项目工程的cocos2d-ext路径内容如下: cocos2d 开源项目 之所以出现这种情况,是由于cocos2d 3.5版本后,项目的组织结构变化较大 关于OALSimpleAudio OALSimpleAudio类是cocos2d中音频处理模块,常常用于游戏开发中管理背景音乐与音效,但这个模块在3.5新版之后,默认是没有集成的,因此需要从cocos2d 在cocos2d中使用cocoapods 游戏开发中也常常需要使用第三方库,无论MacOS 和iOS 开发cocospods已成为项目管理的事实标准.下面我们在cocos2d示例项目中添加Podfile 3.5 版本开始发生的变化比较大,很多的功能都是以类似组件的方式供开发者使用,例如前面提到的音频处理模块OALSimpleAudio.
众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的。比如下面的情况: ? 二、使用iconv库来显示中文 首先在创建好的cocos2d-x项目中搜索包含了iconv的文件名,然后把文件iconv.h的路径引入,如: #include "cocos2d\external\win32 并没有提供相应的库,这就需要开发者自行将iconv库引入到项目中,然后编译。 如下所示: 1 <dict> 2 <key>string1</key> 3 <string>欢迎学习cocos2dx</string> 4 <key>string2 最后把json库导入到我们的cocos2d-x项目中。如图: ?
后续会拓展lightMVC_ex内容来适应大型项目的开发。这套轻量级MVC框架可以帮助开发者组织代码,以及业务结构,让项目更好维护和拓展,提高开发效率。examples目录下有完整的例子Demo。 2.注册model数据对象: ? 3.运行第一个场景: ? lightMVC目前仅适合中小型项目使用,过于复杂的大型项目可能应付起来就会有些吃力,不过后续会继续维护并拓展到lightMVC_ex中来支持大型项目开发,lightMVC会始终保持简单轻量。
这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战」 安装 Cocos CREATOR 新下载后是需要Editor中安装插件的(我最开始安装的时最新的版本,但是新建项目后没有Canvas 这里建议使用2.x的版本) 新建项目 在2.4.4版本下有如下六种可供选择的模板,可以选择hello world来初步学一下。选好模板后,输入项目名和项目存放位置。 资源文件,根据你的需要建立不同的层级 浏览器控制台 可以在控制台对我们的游戏进行性能分析 点击stop后 可以看到每部分的耗时 开始我的项目 分为如下七步 1.创建项目 2.创建游戏场景 3. 制作游戏摇杆 4.搭建物理地图,开启物理引擎 5.摇杆控制坦克移动 6.游戏地图滚动 7.打包发布微信小游戏 我们项目已经建好了我,文件夹也建了。 下面我们创建一下游戏场景: 创建游戏场景 把需要的图片文件放入文件夹 如果复制到Cocos Creator中时复制不进去,那就去文件夹中粘贴。
前段时间一直在更 vue2的源码系列,最近换了换口味,学了一下 cocos ,照猫画虎的写了一个「挑战1024」小游戏。 cocos 网上很多是视频教程,虽然对新手友好,但是信息密度太低了,这里我总结一下 cocos 专有的或者不太符合直觉的一些点,前端的同学看完以后能更快的进入 cocos 的开发中。 编辑器 cocos 开发和平常的前端开发不太一样,它是代码结合 UI 拖拽来实现的,通过拖拽我们可以快速的布局、添加组件、设置属性等。 编译 编译的时候我们选择微信小游戏,填写 appId ,编译完成后通过微信开发者工具导入 build 出来的文件就可以了。 希望对大家有帮助,如果错误也欢迎指出,也可以体验一下我这次开发的小游戏,哈哈:
在浏览器端 AudioContext 是一个专门用于音频处理的接口,工作原理是将 AudioContext 创建出来的各种节点相互连接,音频数据流经这些节点,我们对其控制。
注意:最好是5.15下面。5.2的lua不支持table的getn()方法,这让我情何以堪。(获取table长度。相当与cout。size,length)
CCNode 继承关系 前言 在cocos2d中,CCNode是最基本的显示对象. CCNode 在cocos2d中的重要性类似于UIView之于UIKit. cocos2d 坐标系 图片来自网络 cocos2d中的坐标系统是以左下角为坐标原点(与macOS 相同) positionType 1的效果一样,这是因为在cocos2d中默认的屏幕适配系数为1,因此在示例2中,计算y值时获得的结果与示例1相同 CCPositionUnitUIPoints代表的y值计算公式为:y = y * 适配系数下面我们修改一下适配系数后 CCPositionReferenceCornerTopRight); qq.position = ccp(0.7, 100); [self addChild:qq]; 运行效果: cpp(0.7,100) cocos2d qq.positionType = CCPositionTypeNormalized; qq.position = ccp(0.5, 0.5); [self addChild:qq]; 运行效果: 居中显示 结束语 在cocos2d
本篇博客讲解: 1.Cocos2d-x的核心概念 导演 导演类Director(v3.0之前是CCDirector)用于管理场景对象。 (不多解释啦,不知道的朋友请搜索) auto director = Director::getInstance();//获取唯一的导演 单例模式 导演对象的职责/作用 访问和改变场景 访问Cocos2d-x 播放视频或简单的在图像上输出文字,来实现游戏的开场介绍、胜利和失败提示、帮助介绍 选项类场景。主菜单,设置游戏参数等(比如开始,暂停,继续菜单) 游戏场景。 这是游戏的主要内容 Scene类图:继承图 image.png 层 层是我们写游戏的重点,我们大约99%以上的时间是在层上实现我们游戏内容。 ,它包括了敌人、玩家控制的对象、静态物体、地图和背景等 通常情况它会进行运动,运动方式包括了:移动、旋转、放大、缩小和动画等 菜单 菜单在游戏中时非常重要的概念,它提供操作的集合,在Cococ2d-x
本篇博客讲解: Cocos2d-x介绍与环境搭建 1.移动平台游戏引擎介绍 2.Cocos2d家谱介绍 3.Cocos2d-x设计目标 4.在Windows平台下开始开发Cocos2d-x 我们看上面的图,首先,从横向来讲,cocos2d可以用很多平台开发,基于不同平台开发,很方便! 还有发布平台,写一个程序,发布到多个平台! image.png 可以看到,我们有4条线路来开发游戏 1、C线路:通过c++ 2、D线路:通过Lua(我们不需要管和c++的绑定) 3、B线路:JS绑定的引擎 cocos2d-js如果想开发本地游戏 ,需要调用cocos2d-x(我们不需要管怎么绑定的,只要会JS,就能开发本地游戏) 4、A线路:开发网页游戏 4.在Windows平台下开始开发Cocos2d-x游戏 为什么选择在Window下开发游戏 win32程序在最后发布的时候其实是没有用的,win32其实只是开发,模拟测试,还有学习的环境 install-deps-linux.sh就是基于Linux的安装开发的文件 cocos目录 cocos2d