發(fā)布時(shí)間:2023-11-27 15:12:55 瀏覽量:114次
《開(kāi)源精選》是我們分享Github、Gitee等開(kāi)源社區(qū)中優(yōu)質(zhì)項(xiàng)目的欄目,包括技術(shù)、學(xué)習(xí)、實(shí)用與各種有趣的內(nèi)容。本期推薦的是一個(gè)支持2D、3D的游戲與應(yīng)用開(kāi)發(fā)的的小游戲引擎——LayaAir。
支持WebGL 1.0與2.0 自適應(yīng)。支持ActionScript3、TypeScript、JavaScript三種開(kāi)發(fā)語(yǔ)言,適用2D、3D產(chǎn)品研發(fā)。性能媲美原生APP,一次開(kāi)發(fā)HTML5、APP(安卓與iOS)、小游戲(微信小游戲、QQ小游戲、百度小游戲、支付寶小游戲、BiliBili小游戲、字節(jié)跳動(dòng)小游戲、小米快游戲、OPPO小游戲、vivo小游戲、華為快游戲、等)各個(gè)平臺(tái)同時(shí)發(fā)布。
LayaAir引擎主要包括 引擎庫(kù) 與 LayaAir IDE 兩大核心部分。
LayaAir2.0引擎庫(kù)功能
LayaAir2.0 IDE功能
LayaAir2.0 IDE主要包括項(xiàng)目管理、代碼開(kāi)發(fā)編輯器、可視化編輯器、第三方工具鏈支持工具等。其中主要功能包括:
Laya2.0 IDE 兼容LayaAir 1.x版本的寫法,在2d項(xiàng)目中,可以不需要太大的改動(dòng)即可把原有項(xiàng)目升級(jí)到2.0引擎(升級(jí)前建議備份)
Laya2.0 IDE 采用掛載組件腳本與場(chǎng)景管理的方式進(jìn)行開(kāi)發(fā),在ide中編輯場(chǎng)景與頁(yè)面組件,通過(guò)添加腳本的方式,使項(xiàng)目開(kāi)發(fā)更利于程序,美術(shù),策劃的協(xié)同工作,并且對(duì)初次接觸Laya的開(kāi)發(fā)者,更易于上手,開(kāi)發(fā)方式更友好。
由于LayaAir引擎支持ActionScript3(AS3)、TypeScript(TS)、JavaScript(JS)三種語(yǔ)言開(kāi)發(fā),到底用哪種語(yǔ)言更好呢?常常困惑著剛接觸引擎的新手們。這里簡(jiǎn)單介紹一下。
關(guān)于JS語(yǔ)言
需要大家注意的是JS語(yǔ)言雖然上手更為容易,但是作為一弱類型語(yǔ)言,開(kāi)發(fā)與調(diào)試的難度,以及大型項(xiàng)目的管理與多人協(xié)作等方面,都不如TS與AS3這種可以在IDE中檢測(cè)類型和語(yǔ)法語(yǔ)言。當(dāng)代碼越來(lái)越多的時(shí)候,JS一旦不小心寫錯(cuò),IDE中并不會(huì)有任何提示,只有在運(yùn)行的時(shí)候才會(huì)發(fā)現(xiàn)問(wèn)題,經(jīng)常有開(kāi)發(fā)者為了查一個(gè)小小的失誤,花費(fèi)大量的時(shí)間成本。所以雖然支持JS語(yǔ)言開(kāi)發(fā),但并不建議采用該語(yǔ)言作為中型或大型項(xiàng)目的開(kāi)發(fā)。
關(guān)于TS語(yǔ)言
TS語(yǔ)言是LayaAir引擎官方推薦的開(kāi)發(fā)語(yǔ)言,也是自2.2引擎開(kāi)始,LayaAir引擎源碼所使用的語(yǔ)言。在官方的2.0引擎視頻教學(xué)中,也會(huì)僅采用TS語(yǔ)言進(jìn)行教學(xué)。
關(guān)于AS語(yǔ)言
AS語(yǔ)言是LayaAir 2.2版本之前的引擎源碼語(yǔ)言,AS3語(yǔ)言曾經(jīng)是頁(yè)游時(shí)代的霸主,但自從Adobe正式宣布放棄Flash之后,也代表著該語(yǔ)言也將步入無(wú)人維護(hù)的境地。那一些新的語(yǔ)言特性自然難以支持,毫無(wú)疑問(wèn),繼續(xù)使用該語(yǔ)言將會(huì)拖引擎的后腿。所以,LayaAir引擎源碼語(yǔ)言進(jìn)行了變更,但2.X版引擎,AS語(yǔ)言版本仍會(huì)保持兼容及維護(hù)。但未來(lái)3.x一定會(huì)放棄該語(yǔ)言的支持。所以建議開(kāi)發(fā)者在創(chuàng)建新項(xiàng)目的時(shí)候不要使用AS語(yǔ)言。
場(chǎng)景加載
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;
//加載場(chǎng)景
Scene3D.load("res/threeDimen/scene/LayaScene_dudeScene/Conventional/dudeScene.ls", Handler.create(this, function(scene:Scene3D):void {
Laya.stage.addChild(scene) as Scene3D;
//獲取場(chǎng)景中的相機(jī)
var camera:Camera = scene.getChildByName("Camera") as Camera;
//移動(dòng)攝像機(jī)位置
camera.transform.position = new Vector3(0, 0.81, -1.85);
//旋轉(zhuǎn)攝像機(jī)角度
camera.transform.rotate(new Vector3(0, 0, 0), true, false);
//設(shè)置攝像機(jī)視野范圍(角度)
camera.fieldOfView = 60;
//設(shè)置背景顏色
camera.clearColor = new Vector4(0, 0, 0.6, 1);
//加入攝像機(jī)移動(dòng)控制腳本
camera.addComponent(CameraMoveScript);
//設(shè)置燈光環(huán)境色
//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);
}
}
//激活啟動(dòng)類
new SceneLoad1();
TypeScript
import CameraMoveScript from "http://www.toutiao.com/a7089044528674128391/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;
環(huán)境反射
光照貼圖
方向光
網(wǎng)格加載
基礎(chǔ)碰撞器
玻璃折射
模型示例
—END—
開(kāi)源協(xié)議:
https://gitee.com/layabox/LayaAir/blob/master/LICENSE.md
開(kāi)源地址:
https://gitee.com/layabox/LayaAir
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計(jì)領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報(bào)名。
2. 手機(jī)游戲如何開(kāi)發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說(shuō)明時(shí)代在進(jìn)步游戲在更新,更趨于方便化移動(dòng)化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵?lái)試試!
4. Steam值得入手的武俠游戲盤點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個(gè)抉定都將觸發(fā)更多愛(ài)恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動(dòng)
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動(dòng)漫建模全過(guò)程,不是一般人能學(xué)的會(huì)的,會(huì)的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計(jì)圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動(dòng)畫軟件你知道幾個(gè)?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動(dòng)畫軟件或動(dòng)畫工具時(shí),指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動(dòng)畫的軟件程序。但是,在3D動(dòng)畫軟件中還包含了其他類型的...
8. 開(kāi)發(fā)三昧游戲叫什么(三昧動(dòng)漫)
?三昧動(dòng)漫對(duì)于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會(huì)推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r(shí)候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅(jiān)固
想讓你的3D打印模型更堅(jiān)固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計(jì)技巧,讓你輕松掌握!
10. 虛幻引擎5節(jié)省存儲(chǔ)空間用這招!緩存的清理與設(shè)置
眾所周知,虛幻引擎5(下面簡(jiǎn)稱UE5)特別占用存儲(chǔ)空間,僅一個(gè)版本安裝好的文件就有60G,這還不包括我們?cè)谑褂脮r(shí)保存的工程文件和隨之產(chǎn)生的緩存文件。而...
最新文章
同學(xué)您好!