《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容 。本期推荐的是一个支持2D、3D的游戏与应用开发的的小游戏引擎——LayaAir 。
支持WebGL 1.0与2.0 自适应 。支持ActionScript3、TypeScript、JavaScript三种开发语言,适用2D、3D产品研发 。性能媲美原生APP,一次开发HTML5、APP(安卓与iOS)、小游戏(微信小游戏、QQ小游戏、百度小游戏、支付宝小游戏、BiliBili小游戏、字节跳动小游戏、小米快游戏、OPPO小游戏、vivo小游戏、华为快游戏、等)各个平台同时发布 。
功能特性
LayaAir引擎主要包括 引擎库 与 LayaAir IDE 两大核心部分 。
LayaAir2.0引擎库功能
LayaAir2.0 IDE功能
LayaAir2.0 IDE主要包括项目管理、代码开发编辑器、可视化编辑器、第三方工具链支持工具等 。其中主要功能包括:
Laya2.0 IDE 兼容LayaAir 1.x版本的写法 , 在2d项目中小程序时间预约源码,可以不需要太大的改动即可把原有项目升级到2.0引擎(升级前建议备份)
Laya2.0 IDE 采用挂载组件脚本与场景管理的方式进行开发,在ide中编辑场景与页面组件,通过添加脚本的方式,使项目开发更利于程序,美术,策划的协同工作,并且对初次接触Laya的开发者,更易于上手,开发方式更友好 。
开发语言
由于LayaAir引擎支持ActionScript3(AS3)、TypeScript(TS)、JavaScript(JS)三种语言开发,到底用哪种语言更好呢?常常困惑着刚接触引擎的新手们 。这里简单介绍一下 。
关于JS语言
需要大家注意的是JS语言虽然上手更为容易,但是作为一弱类型语言,开发与调试的难度,以及大型项目的管理与多人协作等方面,都不如TS与AS3这种可以在IDE中检测类型和语法语言 。当代码越来越多的时候,JS一旦不小心写错,IDE中并不会有任何提示 , 只有在运行的时候才会发现问题小程序时间预约源码 , 经常有开发者为了查一个小小的失误,花费大量的时间成本 。所以虽然支持JS语言开发,但并不建议采用该语言作为中型或大型项目的开发 。
关于TS语言
TS语言是LayaAir引擎官方推荐的开发语言 , 也是自2.2引擎开始,LayaAir引擎源码所使用的语言 。在官方的2.0引擎视频教学中 , 也会仅采用TS语言进行教学 。
关于AS语言
AS语言是LayaAir 2.2版本之前的引擎源码语言,AS3语言曾经是页游时代的霸主 , 但自从Adobe正式宣布放弃Flash之后,也代表着该语言也将步入无人维护的境地 。那一些新的语言特性自然难以支持,毫无疑问,继续使用该语言将会拖引擎的后腿 。所以,LayaAir引擎源码语言进行了变更,但2.X版引擎,AS语言版本仍会保持兼容及维护 。但未来3.x一定会放弃该语言的支持 。所以建议开发者在创建新项目的时候不要使用AS语言 。
代码示例
文章插图
场景加载
ActionScript
package LayaAir3D_Scene3D { import common.CameraMoveScript; import laya.d3.core.Camera; import laya.d3.core.scene.Scene3D; import laya.d3.math.Vector3; import laya.d3.math.Vector4; import laya.display.Stage; import laya.utils.Handler; import laya.utils.Stat;public class SceneLoad1 {public function SceneLoad1() {//初始化引擎Laya3D.init(0, 0);Stat.show();Laya.stage.scaleMode = Stage.SCALE_FULL;Laya.stage.screenMode = Stage.SCREEN_NONE;//加载场景Scene3D.load("res/threeDimen/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);//设置摄像机视野范围(角度)camera.fieldOfView = 60;//设置背景颜色camera.clearColor = new Vector4(0, 0, 0.6, 1);//加入摄像机移动控制脚本camera.addComponent(CameraMoveScript);//设置灯光环境色//scene.ambientColor = new Vector3(2.5, 0, 0);}));} }}
JavaScript
class SceneLoad1{ constructor(){Laya3D.init(0, 0);Laya.Stat.show();Laya.stage.scaleMode = Laya.Stage.SCALE_FULL;Laya.stage.screenMode = Laya.Stage.SCREEN_NONE;Laya.Scene3D.load("res/threeDimen/scene/LayaScene_dudeScene/Conventional/dudeScene.ls", Laya.Handler.create(this, this.sceneLoadFinished)); } sceneLoadFinished(scene){Laya.stage.addChild(scene);let camera = scene.getChildByName("Camera");camera.addComponent(CameraMoveScript); }}//激活启动类new SceneLoad1();
TypeScript
import CameraMoveScript from "./common/CameraMoveScript"class SceneLoad1 {constructor() {Laya3D.init(0, 0);Laya.Stat.show();Laya.stage.scaleMode = Laya.Stage.SCALE_FULL;Laya.stage.screenMode = Laya.Stage.SCREEN_NONE;Laya.Scene3D.load("res/threeDimen/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.Camera;camera.addComponent(CameraMoveScript);}));}}new SceneLoad1;
引擎示例
环境反射
光照贴图
方向光
网格加载
基础碰撞器
玻璃折射
模型示例
【APP、小程序开源小游戏引擎,支持2D、3D的游戏开发】—END—
开源协议:
开源地址:
本文到此结束 , 希望对大家有所帮助!
猜你喜欢
- 抖音小店开店详细步骤,零基础一步到位!
- 世间安排,自有深意
- 宝宝需要吃鱼肝油么?鱼肝油和维生素AD是一回事么?
- 女人在来例假的时候,这6件事情万万不能做,真的很伤身
- 开个抖音小店,第一个月就赚5W+的净利润,方法流程我都写出来了【内部详细操作文档】
- 想要院子四季有花赏,一张图解析植物的开花时间进行划分。快收藏
- 春天才是花的季节,泰戈尔为什么偏偏要“生如夏花”?
- 抖音小店排行榜热卖小店TOP5
- 小儿维生素D、钙、维生素AD有什么联系?究竟该如何使用?