《开源精选》是我们分享Github、Gitee等开源社区的优质项目的专栏,内容包括技术、学习、实用以及各种有趣的内容。本期推荐的是——LayaAir,一款支持2D和3D游戏及应用开发的小型游戏引擎。
支持WebGL 1.0和2.0自适应。支持ActionScript3、TypeScript、JavaScript三种开发语言,适合2D、3D产品开发。性能媲美原生APP、HTML5、APP(Android、iOS)、小游戏(微信小游戏、QQ小游戏、百度小游戏、支付宝小游戏、哔哩哔哩小游戏、字节跳动小游戏、小米快游戏)。OPPO小游戏)可一次性开发(小游戏、vivo小游戏、华为快游戏等)在不同平台同时发布。
功能特点LayaAir引擎主要包含引擎库
使用LayaAir IDE 时
有两个核心部分。
LayaAir2.0引擎库函数
LayaAir 2.0引擎保持了1.0的原有功能,包括精灵、矢量图、文本、富文本、位图字体、动画、骨架、音视频、滤镜、事件、加载、缓动、时间、网络、UI等。就这么做吧。系统、物理系统、TiledMap、协议和其他API。
它还添加了内置box2D 物理引擎、组件支持和150 多个3D 功能。例如,新添加的官方材质包括PBRStandardmaterial、PBRSpecularmaterial 和Unlitmaterial 材质。
关于纹理,增加了各种纹理参数设置(mipmap、format、wrapModeU、wrapModeV、filterMode、anisoLevel),增加了纹理上传像素接口,并增加了GPU纹理压缩。
动画方面,Animator动画融合功能增加了交叉淡入淡出、动画的多层混合播放、动画更新机制的实时插值调整,显着降低了内存和动画流畅度性能。添加材质属性动画
支持2D、3D产品开发,同时发布网页(浏览器、webView)、原生APP(IOS、Android)、小游戏(微信、手Q、百度、今日头条、抖音、小米、OPPO、vivo、华为)支持。 )和其他版本。
LayaAir2.0 IDE特点
LayaAir2.0 IDE主要包括项目管理
、代码开发编辑器
, 可视化编辑器
、第三方工具链支持工具
不挂断。主要特点是:
代码开发
UI和场景编辑器
场景管理(2.0新增)
粒子编辑器
动画编辑器
物理编辑器(2.0 中的新增功能)
组件支持(2.0新增)
3D 支持(2.0 中的新增功能)
支持LayaCloud项目(2.0新增)
脚本扩展
默认
应用程序打包
JS混淆和压缩
第三方工具链转换工具(Unity3D、TiledMap、Spine、Keel.)
Laya2.0 IDE兼容LayaAir 1.x版本的编写方式,对于2D项目您可以在对原项目进行少量修改的情况下升级到2.0引擎(我们建议升级前进行备份)。
Laya2.0 IDE是通过实现组件脚本和场景管理来开发的。场景和页面组件在IDE 中进行编辑,并且可以添加脚本,使项目开发在编程、美术和规划之间更加协作。对于Laya开发者来说,上手更容易,开发方式也更友好。
开发语言:LayaAir引擎支持ActionScript3(AS3)
, 打字稿(TS)
, JavaScript (JS)
三种语言哪一种更适合开发?初次使用引擎的初学者常常会感到困惑。这里简单介绍一下。
关于JS语言
大家需要注意的是,JS语言虽然上手容易,但属于弱类型语言,导致开发调试、管理大型项目、多人协作等方面都比较困难。作为JS 语言工作。 TS 和AS3。 IDE可以检测到的类型和语法语言。代码多了,如果JS 写错了,问题只有在运行时才会发现,开发者会花很多时间去检查小错误。因此,虽然支持JS语言开发,但我们不建议使用该语言来开发中型或大型项目。
关于TS语言
TS语言是LayaAir Engine官方推荐的开发语言,也是从2.2 Engine开始的LayaAir Engine源码使用的语言。官方2.0引擎视频指令中,仅使用TS语言进行指令。
关于AS语言
AS语言是LayaAir 2.2及更早版本的引擎源代码语言,AS3语言曾经是网页游戏时代的主流语言,但随着Adobe正式宣布停产Flash,这种语言也将进入下一个局面。这是什么意思。没有人维护它。可以理解的是,这些新的语言特性很难支持。毫无疑问,继续使用这种语言会给引擎带来问题。因此,虽然LayaAir引擎源代码语言发生了变化,但2.X引擎和AS语言版本仍然兼容和维护。然而,3.x 将来肯定会放弃对这种语言的支持。因此,我们建议开发者在创建新项目时不要使用AS语言。
加载代码示例场景
动作脚本
包LayaAir3D_Scene3D {导入common.CameraMoveScript;导入laya.d3.core.Camera;导入laya.d3.core.scene.Scene3D;导入laya.d3.math.Vector3;导入laya.d3.math.Vector4;导入laya.display .Stage;importlaya.utils.Handler;importlaya.utils.Stat;public class SceneLoad1 {public function SceneLoad1() {//引擎初始化Laya3D.init(0, 0);Stat.show();Laya. scaleMode=Stage.SCALE_FULL;Laya.stage.screenMode=Stage.SCREEN_NONE;//加载场景Scene3D.load(\’res/thirdDimen/scene/LayaScene_dudeScene/Conventional/dudeScene.ls\’, Handler.create(this , function( scene:Scene3D ) :void {Laya.stage.addChild(scene) as Scene3D;//获取场景中的相机var Camera:Camera=scene.getChildByName(\’Camera\’) as Camera;//移动相机位置Camera.transform.position=new Vector3 (0, 0.81, -1.85);//旋转相机角度camera.transform.rotate(new Vector3(0, 0, 0), true, false);//相机fieldOfView=60; //设置相机背景颜色。 clearColor=new Vector4(0, 0, 0.6, 1); //添加相机移动控制脚本camera.addComponent(CameraMoveScript); //设置光照环境的颜色。ambientColor=new Vector3(2.5, 0 , 0);}));}}}JavaScript
类SceneLoad1{constructor(){Laya.Stat.show();create(this, this.sceneLoadFinished));}sceneLoadFinished(scene){Laya.stage.addChild(scene); Camera=scene.getChildByName(\’Camera\’); Camera.addComponent(CameraMoveScript);}}//启动类激活new SceneLoad1();TypeScript
从“./common/CameraMoveScript”导入CameraMoveScript。 screenMode=Laya.Stage.SCREEN_NONE; Laya.Scene3D.load(\’res/thirdDimen/scene/LayaScene_dudeScene/Conventional/dudeScene.ls\’, Laya.Handler.create(null, function(scene:Laya.Scene3D):void { Laya.stage. addChild(scene) as Laya.Scene3D; var Camera:Laya.Camera=scene.getChildByName(\’Camera\’) as Laya.addComponent(CameraMoveScript) })); 反映引擎示例环境
光照图
定向光
网格加载
基本碰撞器
玻璃折射
模型示例
-结尾-
开源许可证:https://gitee.com/layabox/LayaAir/blob/master/LICENSE.md
开源地址:https://gitee.com/layabox/LayaAir
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/644020.html