Cocos经典面试问答题集锦

问题1: Cocos 游戏引擎的发展阶段有哪些
Cocos 游戏引擎始于2009年,伴随手游的兴起,一路发展到现在。Cocos 引擎发展到目前分成4个阶段。
1.0阶段(2009~2011年左右)
2009年,安卓手机, 苹果手机, AppStore 兴起,开发移动应用和移动游戏成为了开发者的一个发展方向,Android 与IOS 完全是不同的两个操作系统和开发平台,开发方式完全不一样。如果要开发Android与iOS游戏,要写两套代码,对于开发而言非常的麻烦。这个时候跨平台的游戏开发框架就变得非常的重要,在Cocos 开发之前,国外已经有了一个cocos2d-iphone 的引擎,用OC来开发的。主要用于IOS上开发游戏。中国国内的引擎团队,把cocos2d oc开发的引擎用C++重写了一遍,并且移植到了android上面,改名字为cocos2d-x,并把引擎开源出来。

2.0阶段(2011~2015年)
这个阶段cocos2d-x引擎重新开发,并加上了脚本语言,支持Lua, JS,同时也支持C++开发。Cocos2d-x反展到现在开发跨平台2D手机游戏引擎,同时又用H5 JS 开发语言开发了cocos-H5的游戏引擎为后来在H5小游戏上奠定了基础。同时也开发了很多引擎工具,如cocos studio等作为引擎编辑器。

3.0阶段(2015~2018年),
这个阶段3D手游兴起,cocos 引擎也支持了3D引擎,并且重新调整了整个架构,同时H5的技术也更加的完善,cocos studio开发工具也支持了3D,但是3D的效果并不好,在这个阶段,没有在手游推广起来, 一个是编辑器,一个是开发模式, 大家都习惯了Unity那种好用的编辑器和组件化开发模式。

4.0阶段(2016~2020)
这个阶段cocos引擎一边重构引擎底层,一边开发新的组件化开发工具cocos creator, 同时支持主流的H5游戏平台(微信小游戏,QQ小游戏,抖音小游戏等)。之前3D的短板也在开始补齐。

目前cocos 引擎+cocos creator开发工具能开发手游,微信,抖音华为等H5小游戏。成为非常好的游戏开发工具。

问题2: Cocos 游戏开发薪资待遇如何?
游戏是互联网最熟悉的变现模式,腾讯/网易大部分的收入占比是游戏。目前为止,手游与微信抖音小游戏是非常火的开发方向,很多游戏公司做国内,海外市场,流水收入都很不错,微信抖音小游戏,和短视频一样,把超级App(微信,抖音,QQ)的流量变现,成本低,变现快, 还有一些以H5技术,用游戏的技术技术手段研发的一些内容,比如在线教育,幼儿教育课件等, 还有新型的技术VR, AR等。
手游, 微信抖音小游戏现在很火,薪资也非常的高,同级别的开发人员,做游戏开发比普通的开发薪资高出30%左右, 而且做游戏比做其他的产品更有趣(大家都喜欢玩游戏)。
一年工作经验10K~18K左右, 2~3 年开发经验20k~25K左右, 5年以上25K~30K左右+项目分红, 越往后面,收入中,游戏项目分红的比例会越来越高(大家看到王者荣耀团队的年终分红了吧)。越做到后面游戏做的好的人,收入百万都很正常。微信抖音等小游戏像短视频一下,开发人员可以以极低的成本,研发出来小游戏,用游戏把流量变现, 微信抖音小游戏也是一个非常好的低成本的创业方向。

问题3: Cocos Creator 能同时开发出支持哪些平台的游戏?
Cocos Creator 一次开发多平台发布,能开发出主流的游戏开发平台,比如PC, Android, iOS, H5游戏。其中H5技术的游戏,包含网页游戏和很多游戏平台的变种,如微信小游戏,抖音小游戏,华为小游戏,oppo小游戏,vivo小游戏, 百度小游戏,小米快游戏等。所以Cocos Creator可以一次开发多平台发布,这样大大节约了开发成本。

问题4: Cocos Creator游戏开发使用哪些编程语言?
Cocos Creator 是一次开发多平台发布的游戏引擎,现在H5游戏以及H5游戏的变种(微信,抖音,QQ),非常火,所以开发语言采用的是H5的开发语言,JavaScript, JavaScript是弱类型编程语言, 微软引入了TypeScript的强类型编程语言,TypeScript运行的时候也转成了JavaScript。所以Cocos Creator的开发语言是JavaScript与TypeScript

问题5: Cocos Creator 项目目录结构都有哪些分别是做什么?
Cocos Creator创建了一个项目以后,项目的目录有如下功能:
assets: 存放游戏的资源,场景,代码
library, local, temp: 临时生成的文件夹,可删除,删除后Cocos 会自动生成。
Settings: 项目的设置,把设置保存到本地Setting文件夹下,如果删除,会自动生成,恢复默认设置
Packages: 存放项目的项目插件所在的文件夹。
build-templates: 如果没有,可以自己创建,打包的时候会把这个文件夹下面的内容拷贝到发布包中去, 项目要打入包的一些文件,可以放这个目录下,比如子域。
creator.d.ts: Cocos Api 的说明文档。
project.json: 项目配置文件
jsconfig.json: js相关配置

问题6: Cocos Creator DrawCall 是什么?
游戏引擎把游戏内容绘制到屏幕上,生成画面,游戏引擎通过OpenGL来控制显卡GPU显示物体。游戏物体的绘制都是由GPU绘制完成的,游戏引擎代码控制CPU把要绘制的数据和资源传给GPU,GPU根据数据绘制出来。GPU底层处理绘制都是以三角形为单元,每个显卡能同时处理的三角形数目是有上限的。
游戏场景中要绘制的物体,CPU分成几个批次提交给显卡GPU,就是几个Drawcall.。
例如,游戏中有100个物体要绘制,这100个物体,分成了5批提交给GPU,那么DrawCall就是5, cocos 在运行的时候,会把DrawCall显示出来,这样我们能看到当前游戏的Drawcall。

问题7: 为什么Drawcall越少, 性能越好呢?
显卡绘制三角形数目是有上线的,如果绘制100个物体,drawcall次数越少,那么每次GPU绘制的三角形数目就越多,这样可以充分的发挥GPU的性能。同时drawcall的次数少,CPU给GPU传数据的次数就少,更多的数据一起传, CPU的性能也能提高。

问题8: Cocos Creator使用九宫格技术有哪些优点?
九宫格是指定几个拉升区域,中间的拉升,几个角上的不会被拉升,这样角上就能维持原来设计, 九宫格经常用到哪些大小会改变,并且中间可拉升的UI上。比如聊天气泡,中间拉伸,4个角不拉升,不变,这样4个角能保持大小,中间也放大了。这样带来的有点是,九宫格可以任意大小拉升,并且4个角的形状不变。同时也可以节约运行的内存。比如100x100的内容大小,如果用10x10的九宫格拉伸,这样能节约内存。

问题9: Cocos Creator 图集对性能有什么好处?
图集就是把各个小图打到一起,打到一个大图里面,这样做有什么好处呢?图集的第一个好处是所有的散图打到一个大图里面,传递到显存的时候,可以一次拷贝,不用拷贝多次。同一个图集的不同的精灵图片绘制的时候,有机会合并到一个Drawcall里面绘制。所以图集性能更好,同时能有机会合并更少的DrawCall。

问题10: 帧动画与骨骼动画的优点与缺点比较**
帧动画是是把一个动作分成了几个图,把这些图连起来形成的动画就是帧动画。很多角色的移动和行走,攻击等很多都是帧动画做的。
骨骼动画是把一个角色分成了几个部分,叫做骨骼, 比如人(头,手,身体,角), 然后使用专业的工具来调运动参数,比如行走,手摆动,脚摆动,通过代码来控制手摆动,脚摆动。
帧动画优点:性能好,直接换图即可,不用计算。缺点:内存高,动作分解了好多图片。
骨骼动画优点:内存资源占用少,只有一个一个的骨骼,动画代码控制。缺点:动画需要代码计算,所以性能比帧动画要差。

问题11:Cocos Creator 为什么使用WebSocket
PC和手游做网络游戏的时候,经常使用TCP Socket, 可是Cocos Creator 确建议大家使用Websocket,因为WebSocket是H5的标准,H5里面无法直接使用TCP Socket, 而cocos creator支持H5,所以cocos creator 要求使用WebSocket,服务器自然也要用WebSocket与客户端进行通讯。当然Cocos Creator也有TCP SOCKET但是 H5的游戏就无法送了,建议使用Cocos Creator开发用WebSocket。

问题12: 0基础如何学习Cocos Creator,多久能学会?
Cocos Creator 是一款制作手游,H5小游戏的游戏引擎,简单上手非常快,一般学习Cocos Creator分成4个阶段:
1: 学习JavaScript/TypeScript编程语言。
2: 学习Cocos Creator基础知识,能掌握Cocos Creator基本使用;
3: 学习Cocos Creator框架设计,组织项目,最好做一个项目来体会。
4: 关注游戏技术中的一些专题版块解决对应的问题。

如果你是有程序开发基础的,大约24周就能上手,如果你是0基础,大约12个月左右。

问题13: Cocos Creator Shader如何学习?
游戏开发中的很多特殊的效果都是用Shader来实现。所以Shader开发在很多游戏项目里面很重要。同级别的程序员会Shader与不会Shader的差别就是3K左右。
Cocos Creator是基于OPENGL的,所以Shader的开发语言是GLSL,但是又不全是,Cococs Creator有一个自己的语法结构,内嵌GLSL的代码,最终Creator把它编译成GPU能够识别的Shader程序。
Cocos Creator Shader如何学习,可以从下面几个块入手。
1:了解Shader 在游戏渲染中的位置,输入,输出,以及相关概念,如顶点,纹理坐标,渲染队列, 裁剪剔除等。
2:了解Cocos Shader 的基本结构组成与Shader代码入口。
3: 了解GLSL 开发Shader代码与GLSL的常用库函数
4: 学习Shader的一些案例,在案例中掌握Shader开发熟悉cocos 封装的Shader API。

问题14:发布微信小游戏需要版号么?
微信小游戏开发分为个人开发者与企业开发者,企业开发者开发微信小游戏需要软著和游戏版号,个人开发者不用游戏版号,软著也是可选的,也就是说个人开发者即使你是没有软著也可以上线发布的。没有版号开发者无法对接游戏内支付,只能通过游戏广告变现。

问题15: 开发小游戏哪些平台容易赚钱?
目前H5技术的小游戏很火,各大超级App(微信,QQ, 抖音,支付宝,美团等),手机渠道(华为, oppo, vivo等)有很多流量,平台也需要把流量变现,所以各大渠道和平台都推出了自己的小游戏, 玩家不用安装,点开就可以玩。开发者做微信小游戏都会发到这些平台里面。目前比较好的一些小游戏平台有微信,QQ, 抖音,华为, OPPO, VIVO,配合平台的一些政策,很多小游戏都能有非常好的数据。和传统游戏不一样,小游戏制作成本低,趣味性强,适合个人开发者与创业,可以把小游戏理解为视频界的短视频。

问题16: Cocos Creator如何加载远程的图片并显示出来?
Cocos Creator提供远程加载图片的接口,你只要传一个远程的图片url地址,就能被Cocos Creator加载得到。Cocos Creator提供了一个cc.loader.load(url,加载进度回调, 加载成功回调)。

问题17: Cocos Creator如何制作圆形头像?
圆形头像是现在很多游戏里面显示头像的方式,在圆内的就显示,圆外的就裁减掉。 所以要选取Cocos Creator Mask组件,配置Mask组件为圆形模式,然后把图像作为Mask节点的子节点,这样圆形头像就制作完成了,如图:
image.png

问题18: Cocos Creator 打包发布包需要哪些工具?
Cocos Creator 安装了开发工具以后,基本的开发已经没有问题了,打包发布到各个平台的时候需要对应的相关工具,这里把工具按照平台总结一下。
iOS平台: Mac系统的电脑 + xcode
android平台: JDK 1.8+, android studio安装(SDK+NDK)
微信小游戏: 微信web开发者工具
QQ小游戏: QQ小程序开发者工具
抖音小游戏: 字节跳动开发者工具
其它小游戏平台也会有对应的开发者工具,只需要对着文档下载即可。

问题19: Cocos Creator 如何使用物理引擎?
物理引擎是很重要的模块,很多游戏都需要使用物理引擎来开发与制作。学习物理引擎有几个步骤:
1: 开启物理引擎,配置引擎的调试区域
// step1 开启物理引擎
cc.director.getPhysicsManager().enabled = true;
// step2 配置物理引擎的重力
cc.director.getPhysicsManager().gravity = this.gravity;
// step3: 配置调试区域;
if (this.is_debug) {
var Bits: any = cc.PhysicsManager.DrawBits;
cc.director.getPhysicsManager().debugDrawFlags = Bits.e_pairBit |Bits.e_centerOfMassBit | Bits.e_jointBit | Bits.e_shapeBit;
}
else {
cc.director.getPhysicsManager().debugDrawFlags = 0;
}

2: 给节点添加物理刚体与物理形状,只需要添加刚体组件与碰撞器组件
3: 获取刚体组件,来给刚体对应的物理参数,如(给力,给速度,给力矩等)
4: 如果需要获取碰撞信息,在刚体+碰撞器所在节点挂脚本,编写特定的碰撞检测函数,这样碰撞发生就会调用制定的这几个函数。

问题20: Cocos Creator如何压缩图片的体积。
图片的体积在游戏包体里面占用的比重是比较高的,而且很多肉眼看上去一样的图片,同样的算法,体积差别有好几倍,在游戏发布之前,我们要对一些图片进行压缩,让图片文件的体积尽可能的小,这里给大家推荐的一个图片压缩工具是TinyPNG, 可以压缩JPG 与PNG的体积。

问题21: Cocos Creator 如何压缩字库大小?
为了游戏开发的一些特殊的字体效果,我们往往要自己带上一个字体到包体,但是一般适量字库文件比较大,而我们又只使用了里面的部分文字,这个时候如何压缩呢?我们可以采用字库压缩软件,把用到的字模留下,把不用的剔除掉,从新保存成字库文件,这样就可以压缩字体的体积。也可以将字体做成位图字体,提升绘制效率的同时,获得很好的性能。

问题22: Cocos Creator 如何压缩声音文件
声音也是游戏包体体积占用比较大的文件之一,压缩声音文件的体积也可以减少包体的大小。声音的文件格式一般选取ogg或mp3,最好选ogg,因为没有版权。声音分为几个参数,码率,采样率,声道,一般游戏对音乐的音质要求不高,可以通过降低码率,采样率,单声道来压缩文件体积。常用的转化软件格式工厂就可以做到这个。

问题23: Cocos Creator 支持的骨骼动画工具
Cocos Creator 本省没有骨骼动画的制作工具,但是它支持第三方的骨骼动画的制作工具,Cocos Creator支持spine, 与Drawbones。

问题24: Cocos Creator如何裁剪引擎体积
Cocos Creator 的引擎的体积也是占包体比重比较大的部分,Cocos 提供了引擎定制机制,你可以把不用的模块不打包,可以使得引擎的体积变小。如下图,去掉不用的模块即可。
image.png

问题25: Cocos Creator 到底用JavaScript开发还是TypeScript开发好?
JavaScript与TypeScript的关系先和大家说下,TypeScript运行的时候会转成JavaScript,所以也就是不管怎么样,你要精通TypeScript首先要精通JavaScript。JavaScript是弱类型编程语言,TypeScript是强类型编程语言。弱类型编程语言大型项目维护的时候确实有他的不好的点,当然也有灵活性。TypeScript 让代码更好维护,所以很多项目都越来越多的采用TypeScript来开发,但是有一条对于你而言,必须要精通JavaScript再学TypeScript,要搞懂基本的原理原则。

问题26: Cocos Creator开发微信小游戏包体超过4M怎么办?
开发小游戏的时候,如果包体操过了4M,是无法真机调试和发布的,这里有两个解决办法,微信提供了分包机制,最多允许你4个4M的分包(1个主包+3个分包), 所以如果你项目在16M以内,可以使用微信的分包机制来解决。如果大于16M可以做第三方的资源部署,把资源部署到第三方的服务器上, 修改一下资源加载的地址即可,这样的缺点是要额外提供一个服务器消耗流量,一般我们用CDN来加速处理。

问题27: Cocos Creator ,Cococs Creator 3D分别是什么, 有什么区别?
Cocos creator 是cocos引擎针对 2D游戏与2D游戏中的一些3D元素主打的游戏开发工具,主要是针对开发2D游戏的,由一个团队来维护。
Cocos Creator3D 是cocos引擎针对3D游戏与次时代游戏引擎而打造的专门开发3D的工具,主要针对3D游戏,由另外一个团队维护。
所以2D游戏开发建议使用Cocos Creator, 3D游戏开发建议使用Cocos Creator3D。据说后面又会把这两个项目合并到Cocos Creator里面。

问题28: Cocos Creator 性能热点有哪些?
Cocos Creator 开发游戏,性能热点主要要注意: 游戏逻辑计算消耗, 游戏渲染计算消耗,物理引擎计算消耗。游戏逻辑主要取决于本身的算法和步骤,这个需要开发人员根据自己的实际情况来优化调整,游戏渲染消耗主要是游戏物体的数目和游戏物体的类型,数目越多渲染的压力就越大,游戏物体的类型消耗渲染资源,那么性能也月差,这块主要可以从游戏数目,游戏物体类型优化,当数目与物体类型一定的时候,要发挥GPU绘制的性能,我们可以从减少Shader切换(降低SetPassCall), 调整绘制顺序和参数,来降低Drawcall提升优化性能。物理引擎也是性能开销比较大的点,可以通过减少物理刚体的数目等,来降低物理引擎的开销,也可以配置物理引擎的配置参数,节约计算时间,比如1秒计算多少次物理引擎,比如迭代的次数等。

问题29: Cocos Creator Label性能如何优化
Cocos Creator是使用精灵的方式绘制Label, Label组件从字体文件里面读取文字,然后将文字渲染到一个纹理上,然后才使用精灵的方式把纹理绘制出来。经过测试你会发现,每个Label都会占用一个Drawcall, 因为每个Label都会生成一个纹理,所以这样导致Label的性能不好,这个时候可以对Label做一个优化,就是勾选Label的Bitmap模式,将Label绘制到同一个贴图里面,这样多个在一起的Label就能占用同一个Drawcall。
image.png

问题 30: Cocos Creator背包系统如何优化
面试经常会问背包系统如何做,如何优化?那么我们首先要明白为什么背包系统会需要做优化呢?因为我们有大量的单元格子的内容需要被显示和被渲染,背包系统整体优化方向:
1: 背包系统动态加载数据,这样不至于在场景里面有很多渲染节点, 同时,当我们不显示某些背包的时候,一定要把背包的项目隐藏起来,不要让他参与计算。
2: 背包系统的排版这些,我们可以根据实际情况来进行一些优化,自己写排版算法,而且只排一次,不要放update里面,很多layout排版都是放update里面的。
3: 背包系统每个单元可能会有 图片,特效,label,我们组织的时候,会用一个节点下辖这些孩子节点,这样有个问题是导致不同的渲染类型让drawcall被打乱,同时一些特效,会导致Shader切换这样带来性能的极大开销,我们可以调整结构组织顺序,尽量吧同一类型,同一图集的元素放到一起。比如背包的Label,我们就要把他放一起,并设置成Bitmap模式。
问题31: Cocos Creator如点何使用九宫格?
创建一个精灵节点,把精灵模式设置成Slice的模式。如图
image.png
九宫格模式设置好后,还要给图片编辑九宫格的拉升区域,点击图片,点击编辑按钮并编辑和制定图片的拉升区域,这样就用好了九宫格。
image.png
image.png

问题31: Cocos Creator开发游戏设计分辨率选多少合适?
美术设计分辨率选多少合适,很多人都会为这个问题而困扰,其实这个是没有所谓的标准的,一般我们做设计的时候,考虑你的目标客户都用什么设备,那么你设计分辨率就采用对应的分辨率即可,现在大部分的手机是1080p所有很多人采用1080p,也可以采用1280x720p,都可以,所以没有一定的设计分辨率,根据你的主流机型来选取就可以了。分辨率选取的越大,图片的资源就越大,内存占用也就越大。当然图片的质量也就越好。

问题32: Cocos Creator 如何对接微信的SDK?
微信小游戏提供了小游戏的SDK,微信SDK直接使用wx.xxxx来编写就可以了,通常对接微信SDK的时候,直接编写代码wx.xxxx就可以了,对接微信SDK的时候要用微信web开发者工具来调试,其他的调试wx.xxxx就会报错。如果我们有多个平台的SDK要对接,可以在同一个地方,通过判断当前是什么系统来决定到底是用wx.xxx,还是其他SDK,比如抖音 tt.xxxxx

问题33: Cocos Creator 如何对接头条的SDK?
抖音小游戏也提供了SDK,建议每个开发的小伙伴先看下头条的开发者文档,抖音开发者文档和微信的很相似,基本上就是把wx.xxx变成tt.xxxxx,接口都一样,这样大大的降低了开发者的学习成本,包含QQ也是一样,别看有这么多小游戏,其实对接SDK来还是非常方便的。
头条开发者文档: https://microapp.bytedance.com/docs/zh-CN/mini-game/introduction/about-mini-game/flow-entrance/brief-introduction-on-flow-entrance
微信开发者文档: https://developers.weixin.qq.com/minigame/dev/guide/
你可以比较发现QQ,WX都差不多。

问题34: 微信小游戏如何对接广告SDK?
微信小游戏开发完成上线后,还不能直接对接广告,需要1000个新用户才可以对接广告。当你的小游戏有1000个新用户的时候,在微信小游戏后台就可以成为流量主了,成为流量主以后就能开通广告对接的权限了。

问题35: 小游戏创业没有素材,如何获得?
游戏素材是独立开发程序员永远的痛,那如果你想做微信小游戏创业如何获取素材呢?一般可以使用别人游戏的素材趴取出来。这里给大家推荐一个工具,AssetStudioGUI.exe,
它可以把Unity 开发的游戏app里面的资源都趴取出来,包含3D模型,2DUI,字体,声音等。这样你就有了海量的一些资源和素材,有哪些游戏App呢?你可以去appStore上面去下载,找哪个游戏是你要做的,你可以下载.ipa或.apk文件,直接使用AssetStudioGUI来抓出里面的资源。

问题36: Cocos Creator一个脚本如何调用另外一个脚本里面的函数与方法。
Cocos Creator 组件化开发,编写的脚本是组件类,类的实例是节点上的组件实例。我们要在一个脚本A里面调用脚本B的方法,首先要获得脚本B的实例所在节点,然后在从脚本B的实例所在节点上获取脚本B的组件实例,再调用组件实例B的方法。

问题37: Cocos Creator start与onLoad的区别?
onLoad 组件实例new 出来添加到节点上的时候执行,start第一次update 之前执行。这两个函数都可以作为初始化入口的函数,onLoad比start先,还有一个点,当第一次运行一个场景的时候,场景里面有若干节点,那么这些节点的onLoad会全部掉完,再调用这些节点的start, 假设初始化需要另外一个组件的数据,那么可以把另外一个组件数据写到onLoad,这个组件数据初始化写start, 还有一点要特别的主意,像开启物理引擎,开启碰撞检测这样的代码,必须要写到onLoad里面。

问题38: fixedUpdate是什么意思?cocos creator如何实现fixedUpdate
我们知道游戏引擎的update的次数等于游戏的帧率(FPS: 每秒绘制的次数), 帧率有可能会改变,不同的机器帧率不一样,update调用的次数就不一样,调用的时间间隔就不一样。有些计算需要1秒钟固定的调用次数,不管你是30FPS,还是60FPS都要在1秒钟固定迭代一定的次数,这个叫做fixedUpdate, 固定时间间隔调用。物理引擎或其它的,需要使用这样的机制,cocos creator没有FixedUpdate机制,那么我们如何模拟出fixedUpdate机制呢? 我们可以写下面的代码,假设fixedUpdate的时间间隔为delta,我们可以这些写代码
private nowTime: number = 0;

fixedUpdate(delta: number) { }
update(dt: number) {
this.nowTime += dt;
while(this.nowTime > delta) {
this.fixedUpdate(delta);
this.nowTime -= delta;
}
}
这样1秒内调用fixedUpdate次数就固定了。这个就是fixedUpdate机制

问题39: JavaScript/TypeScript如何传递机制this?
this我们在写代码的时候很多伙伴都搞不懂,其实this比较简单,我们传什么进去就是什么,this有三种传递方式,隐式, 显式,强制绑定。
隐式:对象实例.方法(); 进入方法后this,就是对象实例
显式: 类的方法.call(this的值, 参数), 进入类的函数后,this就是你传入进来的值。
强制绑定: var newfunc = func.bind(实例) newfunc(); 进入到newfunc函数里面this,就是绑定的实例,this可以是任意对象实例,数组,表, 整数,字符串,函数对象都可以,总之,你调用函数的时候传递的是什么就是什么。

问题40: Cocos Creator内存池如何使用?
内存池的原理是先分配一些对象出来,然后在运行的时候,从池里分配,用完后不删除释放直接放回池里,下次用马上就可以拿来。内存池是针对反复构造的对象而言,如果不用内存池,每次重新构造比较慢,都是内存反复创建与释放对系统也是比较大的负担,所以当我们经常要不断创建销毁某种物体的时候我们会用内存池。
内存池的使用思路如下:
step1:创建一个内存池: this.pool = new cc.NodePool(内存池的名字)
step 2: 创建出来一些节点,将节点存入push到内存池里面管理起来。
for(var I = 0; I < 10; I ++) {
let myNode = cc.instantiate(this.template);
this.pool.put(myNode);
} //可以一次性分配比如50个节点。
step 3: 从内存池里面分配对象。
let newNode = this.pool.get();
step 4: 释放对象的时候放回内存池里面。
This.pool.put(之前分配的节点)

问题41: Cocos Creator Tween如何使用?
Tween对象能让我们做出很多的效果出来,cocos的Tween对象,是控制一个节点在某个时间内按照某个特定的方式来改变节点的某个属性。Tween的使用步骤如下:
Step1: 创建tween对象: var tween = cc.tween(节点); // 当前这个tween要作用哪个节点
Step2: 给tween对象下控制命令,tween.to(时间, {属性}), tween.by(时间, {属性}), 这里的属性指的是节点对象的属性成员。你要用tween控制节点的哪个属性,你只要找节点类里面是否有这个属性,比如scaleX, scaleY, pos等。
Step3: tween.start(); 开始tween执行。

问题42: Cocos Creator 如何查看游戏运行时的内存?
开发的时候,查看内存占用是常用的调试手段,Cocos Creator如何查看游戏运行时的内存的详情呢?我们可以把Cocos Creator切换到浏览器预览的模式,运行游戏,游戏在浏览器中运行起来,按F12,点开开发选项的”Memory”, 点击内存快照,这样就把整个内存占用的情况给你列出来了。哪些类型的对象占了多少内存,这样你就能分析出来内存的分布情况。如下图
image.png
image.png

问题43: Cocos Creator如何做profiler函数性能分析?
性能调优里面知道哪些函数占用CPU比较多,消耗性能比较多,对于性能调优来说非常的重要,给我们优化哪些函数入手提供了指导。这样不至于优化哪些不是性能热点的函数,cocos Creator如何列出当前项目里面函数性能的热点开销呢?Cocos Creator可以使用浏览器的profiler工具列举出来函数调用的开销。我们可以把Cocos Creator切换到浏览器预览的模式,运行游戏,游戏在浏览器中运行起来,按F12, 打开Performance
快捷键ctrl +E, 开发工具就将每个函数的耗时情况分析出来,把耗时的排在前列如下:
image.png
image.png
问题44: H5小游戏如何做好资源管理?
Cocos Creator开发H5小游戏经常遇到在切换场景的时候,有时候会遇到卡一下,才切换过去,比如场景A,切换到场景B,卡一下才到场景B,当我们播放一个声音的时候,卡一下才开始播放。当我们点开一个界面的时候,卡一下,才会出来。这里的卡一下指的是从服务器上下载资源到本地,再从本地加载到内存,完了以后才能正常使用所以卡一下,那么我们在做H5小游戏开发的时候,避免有这样的卡顿,一定要提前把资源加载进来以后再进入下一个游戏场景或新的内容页面。H5小游戏一定要先加载资源在进入逻辑。

问题45:Cocos Creator 如何制作进度条?
Cocos Creator 的cc.Sprite有一个fill模式,可以根据比例来填充精灵,它分为fillStart, fillRange, fillStart是开始的位置,fillRange是填充范围,大小为(0, 1.0), 0为没有大小, 1为全部的大小,如果是0.6就显示百分之60%, fill模式有三种形状,水平,垂直, 扇形。所以当我们要做进度条的时候,可以使用精灵的fill模式来做,然后代码获取精灵组件,直接设置精灵组件的fillRange就可以改变进度。

问题46: Cocos Creator 如何将玩家数据到本地?
做游戏的时候,经常需要保存玩家的数据,CocosCreator提供了一个cc.localStorage的模块用来保存和获取玩家本地的数据,等游戏下次启动的时候这个数据还能获取得到。
cc.localStorage.getItem(“key”); cc.localStorage.setItem(“key”, value), 这里的value是字符对象。这样下次启动的时候还能获取这些数据,不会随着游戏结束而数据消失,这个叫做本地存储。

问题47: Cocos Creator 如何解析json数据?
Json数据在游戏开发中经常使用,Cocos Creator如何解析json字符串呢?
Json字符串转JavaScript对象var jObject = JSON.parse(json字符串):
JavaScript对象转json字符串: var jStr = JSON.stringify(jObject);

问题48: Cocos Creator如何获取游戏屏幕的逻辑尺寸?
Cocos Creator可以通过cc.director. getWinSize()获取屏幕的逻辑大小
通过cc.director.getWinSizeInPixel()来获取屏幕的像素大小。

问题49: Cocos Creator 位图字体的优点与缺点
位图字的优点是性能好,因为直接读取配置文件,把字的图片直接贴到屏幕上,缺点是位图字不能够支持任意的字符类型。

问题50: Cocos Creator物理引擎与碰撞系统如何选择?
Cocos Creator 有一个物理引擎,还有一个碰撞系统,那么应该如何选择呢?一般是这样,如果有物理计算的,可以用物理引擎,如果只有碰撞检测,建议用碰撞系统,因为碰撞系统的计算量比物理引擎少,性能会更好些。

评论

 

关注公众号

可用手机学习

获取最新课程