童话里的故事总是骗人的
现实中的 Bug 不仅免费还包邮
你是否经常被工作中的小麻烦
挡住了前进的脚步
因为一个小问题而纠结半天?
别再苦恼啦
Cocos 小秘书携无 Bug 符
帮你解决工作中的所有恼人小问题
让你轻轻松松高效开发
自 4 月 9 日 Cocos 小秘书推出后,已帮助大家解决了许多问题,成功用自身技术力量服务了大批开发者,广受好评。
我们决定将常见的 Bug 解决思路整理公开,希望能对更多的开发者有所帮助,在此也为背后引擎组童鞋们及时帮大家解决问题的敬业精神赞一赞~
以下是 Cocos 小秘书发出的避坑指南,进来白嫖~
有没有办法获取 Prefab 引用的项目资源路径?我想用它来判断资源是不是属于项目公共资源。
目前引擎没有办法在运行时将 res 的包体资源相对路径转化为项目相对路径,我们提供两个方案可供参考喔。
1、通过 cc.loader.getDependsRecursively("resUrl") 获取打包后的资源引用路径。
然后再通过 cc.loader.getRes(url, cc.Asset) 获取加载的资源对象缓存,通过判断资源对象的其它属性来判断是否公共资源。
2、通过插件获取项目发布之后的资源路径,然后将该路径数据记录到游戏数据中。
插件参考:
https://github.com/cocos-creator/demo-process-build-textures
iOS 上按两下 HOME 键出现进程列表,再回到游戏声音就会丢失,请问怎么处理?
可以在 platforms/wechat/wrapper/unify.js 里加上以下代码。
javascript
utils.cloneMethod(globalAdapter, wx,'onAudioInterruptionEnd');
utils.cloneMethod(globalAdapter, wx,'onAudioInterruptionBegin');
接着在 Game.js 里,添加以下代码即可喔。
javascript
__globalAdapter.onAudioInterruptionEnd&&__globalAdapter.onAudioInterruptionEnd(onShown);
__globalAdapter.onAudioInterruptionBegin&&__globalAdapter.onAudioInterruptionBegin(onHidden);
相关 pr 参考:
https://github.com/cocos-creator-packages/adapters/pull/118
cc.Graphics 这个组件填充时,能填充一张图片而不是单色吗?
Graphics 组件支持绘制 svg 矢量图形。
参考工程:
https://github.com/cocos-creator/raphael-example
自定义控件可以做全局吗?不然每个项目都要重新做一套,使用起来很麻烦。
可以将自定义控件做成 Prefab,然后从资源管理器中拖拽相应的预 Prefab 到编辑器的自定义控件分页,即可完成创建。
右键点击自定义控件中的元素,可以选择重命名、从控件库中删除该控件以及更换控件图标。
之后即可像使用内置控件一样,用拖拽的方式在场景中创建您自定义的控件了喔。
具体操作参考官方文档:
https://docs.cocos.com/creator/manual/zh/getting-started/basics/editor-panels/node-library.html
另外就是可以把资源放到内置资源文件夹中。
目录如下:
CocosCreator_2.2.2\resources\static\default-assets\prefab
远程资源的合拼图资源怎么加载 png 和 plist?
参考如下代码:
const LoadRemotePlist = require("./LoadRemotePlist");
cc.Class({
extends: cc.Component,
properties: {
},
start () {
LoadRemotePlist("http://127.0.0.1:5500/assets/resources/emoji.plist",(err, plist)=>{
let spriteFrames = plist.getSpriteFrames();
});
},
});
具体 LoadRemotePlist 脚本代码,参考 Demo :
https://github.com/cocos-creator/load-remote-plist
打包到微信端的小游戏,在安卓上运行的时候会有突然卡顿的现象,而在 iOS 上没有,使用 Cocos Creator 从 2.2.1~2.3.3 版本开发的小游戏都有。(游戏类型:IO )
1、针对游戏帧率:从 60 帧,定制修改成 30 帧,可以针对到一些低端的手机。
2、字体优化:尽量使用 bmfont 字体,不使用系统字体,开启 dynamicAtlas 功能,Label 的 CacheMode 选择为 BITMAP。
3、使用 nodepool,将所有的粒子、游戏中的玩家、还有一些经常出现的元素,全部提前创建好。
相关优化文章参考:
https://www.cocos.com/3493#3493
.fbx 格式的模型在 2.2.2 版本不显示。
2.3.0 版本之前对 3D 模型的支持不够完善,从 2.3.0 版本开始,已支持一键创建 3D 场景必须的节点,包括缩放问题,建议使用 2.3.0 以后的版本进行开发。
怎么让 Creator 支持 ts emitDecoratorMetadata 的参数?
首先 npm init 之后 npm i reflect-metadata --save
然后在 tsconfig.json 中
加入 "experimentalDecorators": true
参考链接:
https://www.jianshu.com/p/bf600274a004
如何执行同步动作?
cc.tween 在链式执行时是按照 sequence 的方式来执行的,但是在编写复杂缓动的时候可能会需要同时并行执行多个队列,cc.tween 提供了 parallel 接口来满足这个需求。
js
let t = cc.tween;
t(this.node)
// 同时执行两个 cc.tween
.parallel(
t().to(1, { scale: 2 }),
t().to(2, { position: cc.v2(100, 100) })
)
.call(() => {
console.log('All tweens finished.')
})
.start()
游戏加入了几个粒子后,加载起来会特别卡。
经过 Demo 测试发现,加入的粒子里面使用内嵌的 Base64 图片数据,这类数据加载起来很慢,建议把图片数据提取为单独的图片,也就是 plist+png 的形式,而不是单独的 plist 粒子资源。
以上就是本次为大家整理的避坑指南
希望能对大家有所帮助喔
Cocos 小秘书的免费试用
截止 6 月 30 日就结束啦
没有参与内测的童鞋不要灰心喔
Cocos 小秘书正式版 7 月份将正式上线
全力助你高效工作、认真生活
敬请期待喔
近日热点:Cocos 有奖征文活动正在火热进行中,只要与游戏研发相关的内容都可以参与唷!快来分享你的开发经验和故事吧!点击【阅读原文】即可参加活动!
更多精彩
Cocos Creator v2.3.4 正式接入腾讯云服务
Cocos Creator 2.4.0 Preview 现已推出
Creator 3D 官方中文视频教程,附素材源码
Analytics自定义事件功能详解,埋点分析利器
“在看”是最大的鼓励▼