[开发笔记] LayaAir-踩坑

本文记录了从cocos creator转向Laya开发微信小游戏的性能提升,以及在Laya 2.1.1.1版本中遇到的各种问题,包括UI编辑器的Bug、坐标转换错误、bmfont的使用限制、滚动效果实现等,并提供了部分解决方案。
摘要由CSDN通过智能技术生成

人的记忆是有极限的,所以写博客记录一下。。。

最近开发的模拟经营类微信小游戏项目,同屏显示的精灵数太多,使用cocos creator开发性能有点差,所以不得不用Laya。

特地测试了一下:

cocos creator同屏(其实也不算全部同屏,算是大部分,因为引擎2.0版本以上已经去除了culling)数量在400+左右,其中400个精灵不停的切换父节点(因为3d游戏做成2d的需要改层级遮挡关系)在微信上运行IphoneX的FPS已经掉到30帧左右了,黑鲨1是60帧,IphoneX的FPS比黑鲨还低可能是ios处理js本来就比较慢的原因。

逻辑代码全部不变,全部转成了Laya之后,同屏700个精灵在微信上运行IphoneX的FPS是60帧,黑鲨也是60帧,再多点就没测试了,因为已经满足需求了。

所以就觉定用Laya了,使用的版本是2.1.1.1,在这之前已经使用过Laya开发了一款3D的小游戏,由于2D的UI界面比较少,所以踩的坑不多。这次的游戏是2D的,结果踩了一连串的坑。。。。。

首先吐槽一下可视化的UI编辑器,选中精灵按键盘的方向键是微调位置,但是我选中了层级窗口的节点,想按方向键上下切换节点,左右展开节点,但是每按一次方向键节点的位置就微调了1,这应该算是BUG吧,不知道为什么这么久还不修。。。

 

接下来是坑了:

1.很多情况下节点不填宽高默认auto是会出BUG的,比如坐标转换会出错,使用Dialog(这个组件比较特别,就算设置了宽高也会出现BUG,不知道是什么操作)如果创建了之后直接弹出(new Dialog().popup()),由于不能及时获取到宽高,弹窗位置不会居中,第二次弹出正常。要解决的话需要在构造函数设置一下宽高,有些弹窗还必须要再onAwake再设置一下宽高才能解决。

 

2.由于是从creator转过来的,所以锚点用习惯了anchor,然后坐标转换一直不对,悲剧了,折腾了一段时间之后断点进去看了函数实现发现Laya是用pivot的。。。。最后自己复制代码出来改装了一下:

/**局部坐标转换成全局坐标 应用锚点
     * @param {pos} 需要转换的局部坐标
     * @param {node} 局部坐标所在的容器
     * @param {toGlobalNode} 需要转换到的上级容器 (默认舞台)
    */
    export function localToGlobalAR(pos:Point,node:Laya.Sprite,toGlobalNode?:Laya.Sprite){
        //坐标转换
        let point = new Point(pos.x,pos.y);
        toGlobalNode=toGlobalNode || Laya
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值