×

微信小游戏 教程

微信小游戏教程 基础

小游戏基础教程 快速上手小游戏基础教程 Adapter(适配器)小游戏基础教程 对引擎的支持小游戏基础教程 模块化

微信小游戏教程 能力

小游戏能力教程 音频播放小游戏能力教程 文件系统

微信小游戏教程 可用性

小游戏可用性教程 调试小游戏可用性教程 性能小游戏可用性教程 多线程 Worker

微信小游戏教程 开放能力

小游戏开放能力教程 用户授权小游戏开放能力教程 用户登录态签名小游戏开放能力教程 获取二维码小游戏开放能力教程 转发小游戏开放能力教程 用户数据的签名验证和加解密

微信小游戏 API

微信小游戏API 渲染

微信小游戏渲染API 画布

小游戏渲染API wx.createCanvas() 创建画布对象小游戏渲染API Canvas 画布对象小游戏渲染API RenderingContext 渲染环境小游戏渲染API Canvas.getContext 获取画布对象的绘图上下文小游戏渲染API Canvas.toTempFilePath小游戏渲染API Canvas.toDataURL()小游戏渲染API Canvas.toTempFilePathSync

微信小游戏渲染API 图片

小游戏渲染API Image wx.createImage() 创建一个图片对象小游戏渲染API Image 图片对象

微信小游戏渲染API 字体

小游戏渲染API wx.getTextLineHeight 获取一行文本的行高小游戏渲染API wx.loadFont 加载自定义字体文件

微信小游戏渲染API 帧率

小游戏渲染API wx.setPreferredFramesPerSecond小游戏渲染API cancelAnimationFrame小游戏渲染API requestAnimationFrame

微信小游戏API 系统

微信小游戏系统API 生命周期

小游戏系统API wx.exitMiniProgram 退出小游戏系统API wx.getLaunchOptionsSync小游戏系统API wx.onHide小游戏系统API wx.offHide小游戏系统API wx.onShow小游戏系统API wx.offShow

微信小游戏系统API 系统信息

小游戏系统API wx.getSystemInfo 获取系统信息小游戏系统API wx.getSystemInfoSync

微信小游戏系统API 系统事件

小游戏系统API wx.onAudioInterruptionEnd小游戏系统API wx.offAudioInterruptionEnd小游戏系统API wx.onAudioInterruptionBegin小游戏系统API wx.offAudioInterruptionBegin小游戏系统API wx.onError小游戏系统API wx.offError

微信小游戏系统API 触摸事件

小游戏系统API wx.onTouchStart小游戏系统API wx.offTouchStart小游戏系统API wx.onTouchMove小游戏系统API wx.offTouchMove小游戏系统API wx.onTouchEnd小游戏系统API wx.offTouchEnd小游戏系统API wx.onTouchCancel小游戏系统API wx.offTouchCancel小游戏系统API Touch 触点

微信小游戏API 设备

微信小游戏设备API 加速计

小游戏设备API wx.onAccelerometerChange小游戏设备API wx.startAccelerometer小游戏设备API wx.stopAccelerometer

微信小游戏设备API 电量

小游戏设备API wx.getBatteryInfo小游戏设备API wx.getBatteryInfoSync

微信小游戏设备API 剪贴板

小游戏设备API wx.getClipboardData小游戏设备API wx.setClipboardData

微信小游戏设备API 罗盘

小游戏设备API wx.onCompassChange小游戏设备API wx.startCompass小游戏设备API wx.stopCompass

微信小游戏设备API 网络

小游戏设备API wx.getNetworkType小游戏设备API wx.onNetworkStatusChange

微信小游戏设备API 屏幕

小游戏设备API wx.getScreenBrightness小游戏设备API wx.setKeepScreenOn小游戏设备API wx.setScreenBrightness

微信小游戏设备API 振动

小游戏设备API wx.vibrateShort小游戏设备API wx.vibrateLong

微信小游戏API 文件

小游戏文件API wx.getFileSystemManager小游戏文件API FileSystemManager 文件管理器小游戏文件API FileSystemManager.access小游戏文件API FileSystemManager.accessSync小游戏文件API FileSystemManager.copyFile 复制文件小游戏文件API FileSystemManager.copyFileSync小游戏文件API FileSystemManager.getFileInfo小游戏文件API FileSystemManager.getSavedFileList小游戏文件API FileSystemManager.mkdir 创建目录小游戏文件API FileSystemManager.mkdirSync小游戏文件API FileSystemManager.rmdir 删除目录小游戏文件API FileSystemManager.readdir小游戏文件API FileSystemManager.removeSavedFile小游戏文件API FileSystemManager.readFile小游戏文件API FileSystemManager.rename小游戏文件API FileSystemManager.readdirSync小游戏文件API FileSystemManager.renameSync小游戏文件API FileSystemManager.readFileSync小游戏文件API FileSystemManager.rmdirSync小游戏文件API FileSystemManager.saveFile小游戏文件API FileSystemManager.stat小游戏文件API Stats FileSystemManager.statSync小游戏文件API FileSystemManager.unlink 删除文件小游戏文件API FileSystemManager.unzip 解压文件小游戏文件API FileSystemManager.unlinkSync小游戏文件API FileSystemManager.unzipSync小游戏文件API FileSystemManager.writeFile 写文件小游戏文件API FileSystemManager.writeFileSync

微信小游戏API 位置

小游戏位置API wx.getLocation

微信小游戏API 网络

微信小游戏网络API 下载

小游戏网络API wx.downloadFile小游戏网络API DownloadTask小游戏网络API DownloadTask.abort小游戏网络API DownloadTask.onProgressUpdate

微信小游戏网络API 发起请求

小游戏网络API wx.request 发起网络请求小游戏网络API RequestTask 网络请求任务对象小游戏网络API RequestTask.abort

微信小游戏网络API WebSocket

小游戏网络API wx.connectSocket小游戏网络API wx.closeSocket 关闭 WeSocket 连接小游戏网络API wx.onSocketOpen小游戏网络API wx.onSocketClose小游戏网络API wx.onSocketMessage小游戏网络API wx.onSocketError小游戏网络API wx.sendSocketMessage小游戏网络API SocketTask小游戏网络API SocketTask.close小游戏网络API SocketTask.onOpen小游戏网络API SocketTask.onClose小游戏网络API SocketTask.onError小游戏网络API SocketTask.onMessage小游戏网络API SocketTask.send

微信小游戏网络API 上传

小游戏网络API wx.uploadFile小游戏网络API UploadTask小游戏网络API UploadTask.abort小游戏网络API UploadTask.onProgressUpdate

微信小游戏API 开放接口

微信小游戏开放接口API 登录

小游戏网络API wx.checkSession小游戏开放接口API wx.login

微信小游戏开放接口API 授权

小游戏开放接口API wx.authorize

微信小游戏开放接口API 用户信息

小游戏开放接口API wx.getUserInfo小游戏开放接口API UserInfo

微信小游戏开放接口API 设置

小游戏开放接口API wx.getSetting小游戏开放接口API wx.openSetting小游戏开放接口API AuthSetting

微信小游戏开放接口API 微信运动

小游戏开发接口API wx.getWeRunData

微信小游戏API 转发

小游戏转发API wx.getShareInfo小游戏转发API wx.hideShareMenu小游戏转发API wx.onShareAppMessage小游戏转发API wx.offShareAppMessage小游戏转发API wx.showShareMenu小游戏转发API wx.shareAppMessage小游戏转发API wx.updateShareMenu

微信小游戏API 调试

小游戏调试API wx.setEnableDebug

微信小游戏API 数据缓存

小游戏数据缓存API wx.clearStorage小游戏数据缓存API wx.clearStorageSync小游戏数据缓存API wx.getStorage小游戏数据缓存API wx.getStorageInfo小游戏数据缓存API wx.getStorageSync小游戏数据缓存API wx.getStorageInfoSync小游戏数据缓存API wx.removeStorage小游戏数据缓存API wx.removeStorageSync小游戏数据缓存API wx.setStorage小游戏数据缓存API wx.setStorageSync

微信小游戏API 界面

微信小游戏界面API 交互

小游戏界面API wx.hideToast小游戏界面API wx.hideLoading小游戏界面API wx.showModal小游戏界面API wx.showToast小游戏界面API wx.showLoading小游戏界面API wx.showActionSheet

微信小游戏界面API 键盘

小游戏界面API wx.hideKeyboard小游戏界面API wx.onKeyboardInput小游戏界面API wx.offKeyboardInput小游戏界面API wx.onKeyboardConfirm小游戏界面API wx.offKeyboardConfirm小游戏界面API wx.onKeyboardComplete小游戏界面API wx.offKeyboardComplete小游戏界面API wx.showKeyboard 显示键盘

微信小游戏界面API 菜单

小游戏界面API wx.setMenuStyle

微信小游戏界面API 窗口

小游戏界面API wx.onWindowResize小游戏界面API wx.offWindowResize

微信小游戏API Worker

小游戏API wx.createWorker小游戏API Worker小游戏API Worker.onMessage小游戏API Worker.postMessage小游戏API Worker.terminate

微信小游戏API 媒体

微信小游戏媒体API 音频

小游戏媒体API wx.createInnerAudioContext小游戏媒体API InnerAudioContextInnerAudioContext.destroyInnerAudioContext.offCanplayInnerAudioContext.onPauseInnerAudioContext.offPauseInnerAudioContext.onStopInnerAudioContext.offStopInnerAudioContext.onEndedInnerAudioContext.offEndedInnerAudioContext.onTimeUpdateInnerAudioContext.onPlayInnerAudioContext.onErrorInnerAudioContext.onWaitingInnerAudioContext.offWaitingInnerAudioContext.onSeekingInnerAudioContext.offSeekingInnerAudioContext.onSeekedInnerAudioContext.offSeekedInnerAudioContext.onCanplayInnerAudioContext.offPlayInnerAudioContext.offTimeUpdateInnerAudioContext.offErrorInnerAudioContext.pauseInnerAudioContext.playInnerAudioContext.seek

微信小游戏录音

RecorderManagerRecorderManager.startRecorderManager.pauseRecorderManager.resumeRecorderManager.stopRecorderManager.onStartRecorderManager.onPauseRecorderManager.onStopRecorderManager.onFrameRecordedRecorderManager.onErrorRecorderManager getRecorderManager

微信小游戏视频

VideoVideo.onWaitingVideo.onPlayVideo.onPauseVideo.onEndedVideo.onTimeUpdateVideo.onErrorVideo.playVideo.pauseVideo.stopVideo.seekVideo.requestFullScreenVideo.exitFullScreencreateVideo

微信小游戏性能

getPerformancePerformancePerformance.nowsetPreferredFramesPerSecondtriggerGC

微信小游戏数据上报

gameLoginReportgameLogoutReport

微信小游戏 工具

微信小游戏工具 概览

微信小游戏工具 界面

小游戏工具 启动页小游戏工具 主界面小游戏工具 菜单栏小游戏工具 工具栏小游戏工具 模拟器小游戏工具 设置页小游戏工具 项目页卡小游戏工具 快捷键小游戏工具 调试小游戏工具 命令行调用小游戏工具 HTTP 调用微信小程序开发文档 微信小游戏工具 下载

微信小程序开发文档-小程序开发基础教程-对引擎的支持


对引擎的支持


支持情况

许多开发者对小游戏对 Cocos、Egret、Laya、Unity 等游戏引擎的支持情况非常关心。但是小游戏是一个不同于浏览器的 JavaScript 运行环境,没有 BOM 和 DOM API。然而,基本上所有基于 HTML5 的游戏引擎都是依赖浏览器提供的 BOM 和 DOM API 的。所以如果要在小游戏中使用引擎,需要对引擎进行改造。

目前,Cocos、Egret、Laya 已经完成了自身引擎及其工具对小游戏的适配和支持,对应的官方文档已经对接入小游戏开发做了介绍。

Unity 目前还没有对小游戏进行适配。不过小游戏提供了对大部分 Canvas 2d 和 WebGL 1.0 特性的支持,支持情况参见 RenderingContext,有能力的开发者可以尝试自行适配。

小游戏是一个不同于浏览器的运行环境

无论是怎样的引擎,最终在游戏运行时所做的大部分事情都是 随着用户的交互更新画面和播放声音。小游戏的开发语言是 JavaScript,那么在引擎的底层就需要通过 JavaScript 调用绘制 API 和音频 API。

一段 JavaScript 代码在运行时可以调用的 API 是依赖于 宿主环境 的。我们最常用的 console.log 甚至都不是 JavaScript 语言核心的一部分,而是浏览器这个宿主环境提供的。常见的宿主环境有浏览器、Node.js 等。浏览器有 BOM 和 DOM API,而 Node.js 则没有;Node.js 有 fs、net 等 Node.js 核心模块提供的文件、网络 API,而浏览器则不具备这些模块。例如,下面这段在浏览器中可以正常运行的代码,在 Node.js 中运行就会报错。

let canvas = document.createElement('canvas')

因为 Node.js 这个宿主环境根本没有提供 document 这个内置的全局变量。

ReferenceError: document is not defined

小游戏的运行环境是一个不同于浏览器的宿主环境,没有提供 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()
// src 地址仅作演示,并不真实存在
audio.src = 'bgm.mp3'
audio.play()

如果你想获取屏幕的宽高,你需要调用 wx.getSystemInfoSync()

let { screenWidth, screenHeight } = wx.getSystemInfoSync()

但是基于 HTML5 的游戏引擎会通过以下方式去创建画布、音频,获取屏幕宽高

let canvas = document.createElement('canvas')
let audio = document.createElement('audio')
console.log(window.innerWidth)
console.log(window.innerHeight)

此时会产生错误,理由如前文所述,小游戏这个宿主环境根本没有提供 document 和 window 这两个在浏览器中内置的全局变量。因为小游戏环境是一个不同于浏览器的宿主环境。

ReferenceError: document is not defined
ReferenceError: window is not defined

所以,基本上所有基于 HTML5 的游戏引擎都不能直接迁移到小游戏中使用,因为引擎可能或多或少都用到了 BOM 和 DOM 这些浏览器环境特有的 API。只有对引擎进行改造,将对 BOM 和 DOM API 的调用改成 wx API 的调用,引擎才能运行在小游戏环境中。

除了修改引擎,还有一种适配方式,即在引擎和游戏逻辑代码之间加一层模拟 BOM 和 DOM API 的适配层,我们称之为 Adapter。这层适配层在全局通过 wx API 模拟了引擎会访问到的那部分 window 和 document 对象的属性和方法,使引擎感受不到环境的差异。

微信小游戏开发文档小游戏开发教程

Adapter 是用户代码,不是基础库的一部分。关于 Adapter 的介绍,参见教程 Adapter



分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)