#一、支援情況
基本上所有基於HTML5的遊戲引擎都是依賴於瀏覽器環境提供的BOM和DOM API,但是小程式是一個不同於瀏覽器的JavaScript執行環境,沒有BOM和DOM API。因此如果要在小遊戲中使用引擎,需要對引擎進行改造。
目前,Cocos,Egret,Laya 已經完成了自身引擎及其工具對小遊戲的適配和支援,對應的官方文件也對接入小遊戲的開發做了介紹,具體可查閱官方文件。
Unity目前還沒有對小遊戲進行適配。不過小遊戲提供了對大部分Canvas 2d和WebGL 1.0 特性的支援,有能力的開發者可以自行適配。
#二、小遊戲是一個不同於瀏覽器的執行環境
無論是怎樣的引擎,最終在遊戲執行時所做的大部分事情都是隨著使用者的互動更新畫面和播放聲音。
小遊戲的開發語言是JavaScript,那麼引擎在底層就需要通過JavaScript呼叫繪製API和音訊API。
一段JavaScript程式碼在執行時可以呼叫API是依賴於宿主環境的。我們最常用的console.log甚至不是JavaScript語言核心的一部分,而是瀏覽器這個宿主環境提供的。
常見的宿主環境有瀏覽器、Node.js等。瀏覽器有BOM和DOM API,而Node.js則沒有;Node.js有fs、net等Node.js核心模組提供的檔案、網路API,而瀏覽器則不具備這些模組。
小遊戲的執行環境是一個不同於瀏覽器的宿主環境,沒有提供BOM和DOM API,提供的是wx API。通過wx API開發者可以呼叫Native提供的繪製、音視訊、網路、檔案等能力。
如果你想建立一個畫布,你需要呼叫wx.createCanvas()
let canvas = wx.createCanvas();
let context = canvas.getContext('2d');
複製程式碼
如果你想建立一個音訊物件,你需要呼叫wx.createInnerAudioContext()
let audio = wx.createInnerAudioContext()
audio.src = 'audio/bgm.mp3';
audio.play();
複製程式碼
如果你想獲取螢幕的寬高,你需要呼叫wx.getSystemInfoSync()
let { screenWidth, screenHeight } = wx.getSystemInfoSync();
console.log({ screenWidth, screenHeight })
複製程式碼
如果您不習慣使用wx API,而是想要通過BOM和DOM API 來呼叫,那麼建議您加入上一節中講述的Adapter。
本節內容就為大家介紹到這裡,下一節我們將為大家介紹模組化的相關內容。
學習是一條令人時而喜極而泣,時而鬱鬱寡歡的道路。如果您覺得這篇文章對您有所幫助,請您酌情讚賞!