今天的引擎版本更新又是一次大版本更新,不仅推出了2.2正式版,还有重磅版本2.3.0beta版,关于本次重要的版本更新内容,本篇逐一为大家进行详细介绍。
2.2.0以下版本升级注意事项
LayaAir引擎在发新版本之前,会先将上个版本稳定下来。由于LayaAir引擎上个版本(2.2.0beta)涉及到引擎源码的切换及编译模式改变等等,改动的比较大,难免会有一些未知的bug,所以此次用了近两个月来稳定这个2.2版本。今天,在推出2.3.0bata版之际,2.2.0也稳定了。想升级2.2.0的线上项目可以踏实更新了。
由于2.2开始IDE编译模式发生了变化。这里我们也再次总结一下2.1或者更低版本升级2.2.0正式版本或者更高版本的注意事项。
1、AS语言版本在2.2.0开始不再可以查看源码,所以如果有查看修改源码需求的AS语言项目,需要止步于2.1.1.1这个版本。
2、AS语言版本如果要升级到2.2.0或者更高版本,需要注意的是,引擎库的引用需要到LayaAirIDE的编辑模式,在F9类库设置里勾选。
(上图为勾选后引擎库引用效果与旧版本引擎对比)
3、LayaAirIDE 2.2.0及以上版本创建项目时不能选择2.2.0以下的引擎版本。否则会出现问题。这个问题主要是在编程语言的选择时,如果选择了ActionScript3.0项目和TypeScript项目实验版才会导致。TS和JS理论上是没有问题的,但建议不要使用高版本IDE创建低版本引擎项目。
4、标准的TypeScript项目还是和原来一样,查看不到源码,并非是升级了引擎版本就可以看到源码了。只有创建新的实验版TypeScript项目,才能看到TypeScript源码。
5、实验版TypeScript项目目前在IDE里还有自动引包的BUG,这个BUG是内置的VSCode编辑器问题,目前VSCode官方最新测试版该问题已被解决,等VSCode正式版之后,我们会进行相关的适配调整。如果一定要用TypeScript实验版的开发者,遇到自动引包问题的时候,手动引包即可,目前未发现有别的问题。
6、LayaAirIDE 2.2.0开始默认取消了IDE内置的F5断点调试模式,开发者需要断点调试,可以F6运行,调起chrome的断点调试。这一直是我们推荐的调试模式。如果开发者一定要在IDE内进行断点,官网文档中给出了开启F5调试的IDE修改方式。文档链接如下:
https://ldc2.layabox.com/doc/?nav=zh-ts-3-0-7
vivo小游戏适配优化
LayaAirIDE 2.3.0beta版开始,适配了vivo最新的发布方案,增加了vivo发布的分包支持。同时在vivo小游戏发布的功能里,增加了rpk包调试的日志级别选项,开发者可以选择输出什么级别的日志,增强了开发者调试快游戏的体验。这个功能在其它的快游戏的发布选项里也有,目前阶段实测是vivo最为成熟。
LayaNative相关更新
LayaNative2.3.0版本响应苹果政策,删除了内置的UIWebview控件,使用了苹果推荐的WKWebview,解决了开发者项目提交App Store审核被拒的问题(注:如果项目中使用第三方SDK,第三方的SDK中很有可能还在使用UIWebview,也可能导致审核被拒问题)。
另外LayaNative的调试器,也会更新到最新版本,支持iOS最新的系统,解决部分iOS手机无法成功安装调试器的问题。
开始在GitHub实时维护了
Layabox官网中引擎版本更新的周期是一个月左右发一个版本。之前引擎的GitHub更新基本上是与官网更新周期同步的。从本次版本开始,LayaAir引擎团队开启了GitHub实时维护模式,对于LayaAir新的引擎功能,以及发现的引擎BUG修改,会直接实时提交到GitHub中,如果开发者同步了GitHub上的LayaAir引擎版本,将会实时获得最新的引擎版本。无需再等Layabox官网一月一次的版本更新(注:IDE与3D插件更新不开源,只能等官网)。
(官网首页中也有LayaAir引擎Github地址入口了)
GitHub地址:https://github.com/layabox/LayaAir
与此同时,我们也欢迎有引擎代码提交能力的开发者,参与到引擎的BUG维护以及功能开发中来,我们官方引擎团队在审核通过后,会合并到线上版本中。对于参与引擎开发与维护的开发者,有机会获得LayaAir引擎官方团队的邀请,加入到开源小组中,获得开源小组的证书、参与引擎发展规划会议以及免费获得引擎技术服务等福利。
3D导出插件支持Unity2018.4.7
自从2016年LayaAir引擎支持3D以来,引擎的3D场景一直是基于Unity 5.6.x系列版本作的适配。在收到开发者的反馈后,我们从2.3版本开始支持Unity2018.4.7的导出。(这里需要注意的是,推荐开发者使用的版本是Unity2018.4.7,如果使用了Unity2018其它版本,可能会有未知的兼容问题。)
从2.3开始,不再维护Unity 5.6.x的3D导出插件版本。已有旧项目的开发者,在升级到Unity2018.4.7版本后,安装好2.3版LayaAir Unity导出插件,再直接在Unity2018里导入Unity 5.6.x旧项目,会自动完成升级。开发者直接在新的Unity2018插件模式下导出资源即可,(注意:3D插件最好要对应引擎的版本,虽然新版引擎可以兼容旧版插件导出的资源,但新版引擎的配套功能只有在新插件中才可以使用。而且旧版本引擎无法使用新版插件导出资源)。
另外有一处Unity 5.6.x升级到Unity2018.x的注意事项,那就是在导出光照贴图时需要将Unity中PlayerSetting的LightmapEncode切换为normal模式,才会正常。
2.3.0开始增加3D多光源支持
在LayaAir2.3.0beta之前的版本场景中只能添加一盏平行光、一盏点光源、一盏聚光灯,在实时光照渲染方面相对薄弱,很大程度的限制了艺术家对场景打光的发挥。
从LayaAir2.3.0beta版本开始,引擎增加了前向渲染多光源解决方案,开发者可以在3D场景中添加任意数量任意类型的实时光源,大幅提升了场景的实时光照效果,增加了场景光影的多变性。开发者还可以在自定义Shader中轻松的接入多光源渲染函数(具体可参考引擎官方Shader),使得LayaAir引擎在实时渲染质量上又迈出了一步。
(多光源效果示意图,图已被压缩,效果失真)
另外,LayaAir引擎在多光源实现的同时兼顾了移动端的性能保障。
2.3.0简化了自定义Shader流程
除了性能与功能,LayaAir在易用性上的探索也从未停止过,每一次易用性的提升,对开发者都是一次解放。
LayaAir2.3.0beta之前的引擎版本,要实现自定义Shader必须关联精灵宏定义和材质宏定义,相对来说较为繁琐。从LayaAir2.3.0beta开始,对此做出了易用性的改良,引擎会在内部自动化完成Shader和精灵宏定义、材质宏定义的关联工作,同时解除Shader和材质、精灵需绑定的限制,无需再传入精灵、材质宏定义集合两个参数。让自定义Shader更自由,更易用。
2.3.0版本3D其它新增功能
除了重磅功能多光源支持和自定义Shader易用性的提升外,2.3.0beta版中还新增了大量的其它3D实用能力。
具体新增如下:
1、Shader3D增加函数compileShaderByDefineNames,增加后可通过宏定义名字预编译Shader函数。
2、粒子增加simulationSpeed属性,增加后可调整粒子的发射速度。
3、增加了纹理格式枚举函数:
- TextureFormat、
- RenderTextureFormat、
- RenderTextureDepthFormat。
4、TextureFormat新增R32G32B32A32浮点数纹理格式。
5、增加了两个检测函数:
- SystemUtils.supportTextureFormat(是否支持纹理格式),
- SystemUtils.supportRenderTextureFormat(是否支持渲染纹理格式)。
6、Shader增加全局u_SunLight变量,可获取全局太阳光变量。
7、增加blendEquation混合方程,支持ADD、SUBTRACT、REVERSE_SUBTRACT三种枚举。
8、增加PixelLineSprite包围盒。
9、增加BaseRender增加markAsUnStatic函数。
10、解除StaticBatchManager.combine函数必须标记Static为true的限制。
2.3.0版本升级注意事项
如果开发者的项目是从LayaAir2.3.0beta之前的引擎版本升级上来的,还需要对照以下的升级注意事项,看项目中用到了哪些需要调整的地方,然后依据以下升级注意事项进行调整。
升级注意事项如下:
1、升级后宏定义由原来的number变更为ShaderDefine类型,获取宏定义由原registerDefine函数变更为Shader3D.getDefineByName静态函数,使用方式更简单,具体可参考官网最新的自定义Shader示例。
2、Lighting.glsl内三种灯光结构体属性修正为小写。
3、升级后Shader预编译建议使用compileShaderByDefineNames,宏定义字符相对compileShader,Mask值更稳定,不会因为注册顺序调整导致值发生变化。
4、LayaAir2.3.0beta版开始,引擎会默认开启多光源渲染模式,如果想回滚至单光源模式可修改Config3D.enbaleMultiLight为false。
5、由于iOS微信小游戏平台的bug问题,在LayaAir2.3.0beta版之前,我们限制了引擎的GPU Instance合并使用,LayaAir2.3.0beta版本开始,移除了这个限制。
写在最后
4月,我们在公众号发布了LayaAir引擎规划文章《LayaAir引擎放弃Canvas API,打造次世代3D引擎与云游戏引擎,提供AI赋能!》,其后,我们不断的推出大版本更新,逐步完成了规划中大部分计划中的引擎能力。
未来,我们仍将会保持在3D方面的大力投入,努力保持LayaAir在3D领域的领先性优势,不断加强引擎高品质3D游戏的渲染能力。对于3D游戏开发工具方面,也是按计划中在如期进行。我们会率先推出无编程的3D游戏制作工具,然后再推出专业版LayaAir引擎3D开发工具。