LayaAir 2.0自发布以来,我们一直在大版本推进3D引擎功能。最近,一些开发者也迫切希望对2D给予更多的关注与精力。作为非常重视开发者反馈的我们,在这个版本里,暂缓3D引擎大版本功能的推进,推出一个小版本,本次的2.12.1虽然是个小版本,但推出的功能并不少,除3D引擎的例行更新外,主要的亮点就是2D引擎与周边(Spine、Live2D、Box2D)的实用性功能支持以及IDE使用体验的大幅优化。
1
新增适配Spine3.7与Spine3.8
LayaAir引擎一直是采用自己的2D骨骼系统。对于第三方的骨骼(例如Spine)的使用,只能是通过LayaAirIDE的转换工具将第三方的骨骼文件转换成LayaAir引擎的私有格式文件(.sk与.png)。这种方案的好处是引擎自身可以进行极致的性能优化,远比第三方的运行性能要高很多。
但是,也存在一个短板。那就是 LayaAir引擎毕竟不是只做骨骼动画的引擎,把所有第三方的功能在LayaAir内部全都重新实现一遍没有必要,也会导致引擎的臃肿。所以LayaAir引擎只集成了骨骼动画常用和通用的功能。
因此,当开发者要使用LayaAir引擎不支持的Spine功能时,只能舍弃这部分功能。
本次版本(2.12.1)为提升开发者的使用体验,除保持原有的引擎内置的骨骼动画方案外。还新增了Spine3.7.x与3.8.x两个版本的适配方案,也就是Spine的计算运行采用Spine官方的js库,LayaAir引擎通过适配库,接管了Spine的渲染显示。
这种方案的好处是可以更好的使用Spine官方的功能,缺点是性能的瓶颈在于Spine官方的js库。并且经过实测对比,骨骼的运行性能一定是不如LayaAir引擎内置的骨骼动画方案。所以开发者如果只是使用Spine的常用与基础功能,仍然建议优先选用LayaAir内置的骨骼方案。
具体功能的使用,请参考官网文档
Spine刚刚推出的4.0.x,我们也在适配中,下个版本推出
2
Box2D物理引擎的更新
在以前的引擎版本中,LayaAir内置适配的2D物理引擎版本是Box2D 2.3.1,本次我们将这个物理引擎适配升级到Box2D当前的最新版2.4.1。
相对于之前的LayaAir2D物理版本, 距离关节DistanceJoint增加了minLength、maxLength这两个属性,于是乎,就和绳索关节RopeJoint重复了,因此,绳索关节RopeJoint被删除,有使用原绳索关节的,可以用新版本的距离关节DistanceJoint来代替。另外,车轮关节WheelJoint增加了刚体移动范围约束enableLimit、移动范围下限lowerTranslation、移动范围上限upperTranslation,这几个属性。
除关节外,本次物理引擎还增加了边线碰撞体Edgecollider。边线碰撞体只能是两个端点组成的线段,这与链条碰撞体ChainCollider可以是两个端点的线段也可以是多个点的折线不同。另外,即便同样都是两个端点组成的线段,看上去外观一样,但是在碰撞时,边线碰撞体Edgecollider可以两边都发生碰撞 ,而ChainCollider只能是单边产生碰撞,另一边是可以穿透过去的。
关于本次2D物理新增功能的使用,更详细的说明,可以查看Layabox官网的2D物理文档。
除两者对比的区别外,需要提醒的是,此次升级后的物理版本,边线碰撞体与链条碰撞体都不受重力影响。而以前的物理版本,链条碰撞体ChainCollider是可以受重力影响的。
除了新增的功能变化,此次物理引擎升级,还带来了性能上的提升。在多个平台实测碰撞计算压力较大的DEMO,均有超过30%的性能提升。另外,新版物理引擎压缩后仅为240K,相当于旧版物理引擎压缩后的34%。关节的运行也更加稳定。但是实测堆叠相关的稳定性稍弱于旧版。
3
IDE的新增功能与优化
之前的版本,主要的更新都集中3D引擎上,LayaAir IDE除了小游戏平台的适配更新外,针对IDE的更新内容比较少。本次版本,对于IDE的体验优化也是比较重要的一块。我们在开发者群与社区里收集了大量的开发者反馈,对于收集到痛点逐一验证并进行优化。
首先是MAC系统的优化,原来的IDE版本解压后是app格式,要手动copy到应用程序目录。本次版本解压后是dmg格式,是一种常规的软件安装模式,以后安装使用更加方便快捷。并且本次版本还支持了苹果M1芯片的设备。除此之外,还丰富了MAC系统下的IDE快捷键,例如增加了全屏与退出全屏(control + command + F)、最小化(command + M)。
针对MAC与Win同步都新增的功能也有不少,例如:
针对IDE原有的功能,基于开发者的反馈也进行了体验优化,例如:
除了以上的新增与优化外,本次版本还修复了一些IDE的BUG,就不在这里一一列出了,开发者可以从IDE下载的更新日志里查看。
4
开源Live2D的适配库
从用户的反馈频率来看,使用Live2D这个动画软件的开发者近年来越来越多。基于开发者的需求出发,LayaAir引擎自本次发版开始,将Live2D的LayaAir引擎适配库,连同整个适配库项目与文档说明,已提交到gitee上,有需要的开发者,可以前往clone,地址为:
https://gitee.com/layabox/live2d
5
3D引擎的更新
最后讲一讲压轴的3D引擎更新,本次的LayaAir 2.12.1引擎版本,除了修复BUG外,也有一些功能新增和优化。
首先是AO(Ambient Occlusion)环境光遮蔽,环境光遮蔽后期处理效果是一种类似实时环境光遮蔽的全屏幕后期处理效果。它会使彼此靠近的褶皱、孔洞、交叉点和表面变得更暗。效果如下图所示:
关于AO的使用的方式,开发者可前往官网的示例查看,地址为:https://layaair2.ldc2.layabox.com/demo2/?language=zh&category=3d&group=PostProcess&name=PostProcess_AO
第二是增加1字节,2字节,3字节的顶点设置格式。以前引擎最小的顶 点数据格式是4字节 ,从本次版本开始,开发者可以根据需求 极致压缩顶点数据。
例如下面的示例代码组织了一个3字节的位置,3字节的法线以及3字节的顶点色,大大节省了vb占用的空间:
let vertexDeclaration = new VertexDeclaration(9, [
new VertexElement(0, VertexElementFormat.Byte3, VertexTerrain.TERRAIN_POSITION0),
new VertexElement(3, VertexElementFormat.Byte3, VertexTerrain.TERRAIN_NORMAL0),
new VertexElement(6, VertexElementFormat.Byte3, VertexTerrain.TERRAIN_COLOR0)
]);
横向滚动代码可以查看全部
第三是增加全局静态合并和动态合并的开关。从本次版本开始,开发者可以根据需求使用Config3D来控制引擎自带的动态合批以及静态合批。具体的API分别是Config3D.enableDynamicManager以及Config3D.enableStaticManager。
除此之外,还有一些功能优化,例如:
BUG修复相关的,开发者可前往官方的引擎更新日志查看。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有