相信選擇laya遊戲引擎這類h5遊戲引擎的開發者或多或少都有一些前端的開發經驗,在開始開發小遊戲以後會努力尋找和過往開發經歷類似的地方。最後會發現兩者之間的關係相似於網頁開發和node.js服務端開發之間的關係,雖然都是使用了前端的開發語言(JS或TS),可是背後涉及的知識點卻徹底不一樣。html
小遊戲所有是經過canvas或者webgl畫在頁面中,而網頁開發是經過瀏覽器去作的渲染。咱們在網頁開發中不少想固然的事情,在h5遊戲開發中就要費很大勁去實現,例如,網頁中父容器的高度是能夠經過內部內容撐起來的、自定義列表自己就是支持鼠標拖拽滾動事件、瀏覽器會記錄咱們網頁訪問的記錄。若是你想在小遊戲中實現這些特性都須要本身去開發實現。前端
即便有不少東西都不一樣,咱們仍是能夠在開發小遊戲的過程當中借鑑一些以前的開發h5網頁的經驗,例如,小遊戲性能優化、小遊戲內部的ui組件開發思路、網頁開發中經常使用的設計模式。這些咱們均可以繼續在小遊戲中使用。甚至咱們平時在網頁開發中使用的類庫,在小遊戲中也是可使用,例如lodash、md5這樣的工具庫。不過千萬要注意不要引入相似vue、jquery這種存在操做dom樹的類庫,由於小遊戲自己並無DOM、BOM環境。vue
在開始小遊戲開發以前,我先來介紹一些和小遊戲、laya引擎、oppo快遊戲相關的關鍵術語。node
小遊戲:jquery
Laya引擎:git
設計寬高
做出縮放、裁剪以後獲得寬高;OPPO快遊戲github
.rpk
結尾;瞭解完基礎知識以後咱們能夠嘗試開發本身的ui了,目前主流的3種遊戲引擎Laya、Cocos、白鷺所有都支持IDE拖拽和編寫代碼這2種方式生成界面。web
咱們先從簡單的IDE拖拽開始,準備實現一個在輸入框中改變文字,界面中實時更改文字的效果。typescript
建立一個新的項目,在左側菜單欄選擇IDE的編輯模式json
在test
文件夾中右鍵新建場景
在場景中添加組件,並經過編輯器賦予一些的樣式屬性
在script目錄中新建InputDemo.ts
做爲場景的runtime類
InputDemo.ts
代碼以下:
export default class InputDemo extends Laya.Scene {
onEnable() {
let $input: Laya.TextInput = this.getChildByName('input') as Laya.TextInput;
let $container: Laya.Text = this.getChildByName('container') as Laya.Text;
$input.on(Laya.Event.INPUT, this, (text, value) => {
$container.text = $input.text;
});
}
}
複製代碼
Done!
經過代碼生成UI僅僅是將生成界面的過程所有搬運到業務邏輯中完成,經過API新建UI組件,而後經過Laya.stage.addChild(ui)
方法將ui直接插入到頁面中,其餘的綁定事件的邏輯不變,這裏咱們就不贅述了,有興趣的同窗能夠本身嘗試寫一寫。
在編輯模式時新建場景,有一個選項「導出類型」,一開始開發的時候你們可能會有疑問,這究竟是個啥東西?
內嵌模式:生成場景類,同時會把ui數據內嵌到類裏面
加載模式:生成場景類,會把全部UI數據放到ui.json裏,使用時須要加載
分離模式:生成場景類,同時生成單個場景數據文件,每次加載一個場景文件
文件模式:只生成場景數據文件
這裏摘錄一下laya官方文檔裏面的解釋,咱們經過代碼簡單的解釋一下。
內嵌模式,會在ui/layaMaxUI.ts
文件中生成場景類,同時,會把全部場景相關的代碼都放到這個場景類中,這種模式打開頁面速度最快。可是,小遊戲基本都會限制包體大小,若是全部代碼都存放在js/ts文件中,這樣沒辦法經過異步加載場景數據的方式減小包體大小。
加載模式,會在ui/layaMaxUI.ts
文件中生成場景類,可是,內部的場景數據所有都定義在bin/ui.json
目錄下面,同時,若是你想使用場景,則須要手動加載場景文件,而後,在建立場景。
主動加載場景
主動建立view
分離模式 & 文件模式,由於這兩種模式比較相似咱們就不分開講了,兩者都會生成場景數據,可是,文件模式並不會生成場景類。這一點致使兩者在使用場景中的UI組件時會有一點點小小的差別,分離模式能夠直接經過this
對象來找到組件,例如this.input
,而文件模式只能經過this.getChildByName('xxx')
來獲取。我的感受分離模式更好用一些(由於全部UI組件所有能夠很方便的獲取到),不過官方推薦使用文件模式。
原本還想在講一下多屏幕適配的,不過發現最近文檔更新了作了詳細介紹這裏就不贅述了。
筆者19年5月開始深度參與了一個OPPO快遊戲項目(相似微信小遊戲),從零開始折騰到如今,終於算是入了H5遊戲開發的門。目前關於Laya引擎開發快遊戲的教程還很少,因而筆者決定把這幾個月踩過的坑、解決的問題、總結的經驗都記錄下來,方便其餘準備入坑的同窗提早規避。
Laya2.x遊戲引擎入門系列預計會寫如下文章,記錄如何從零開始完成一個快遊戲的開發和上架:
同時,Laya2目前將引擎代碼經過TypeScript進行了重構,你們若是在寫代碼中遇到什麼疑問均可以直接在GitHub源碼中找到答案,後續筆者也會寫一些關於Laya2源碼解析的文章,有興趣的朋友能夠關注。
第一次嘗試寫完整的教學文章,若有錯誤或不嚴謹的地方,請務必給予指正,十分感謝!