首页 >> 小游戏基础教程对引擎的支持>> 微信小程序开发文档小程序开发基础教程对引擎的支持w3cschool
-->

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

由 卓别林 创建,编程狮 最后一次修改 2018-01-17
-->

对引擎的支持


支持情况

许多开发者对小游戏对 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 definedReferenceError: window is not defined

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

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

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

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


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部
  • 编程入门教程
  • VIP会员
  • 微信小游戏教程
  • 微信小游戏教程基础
  • 小游戏基础教程快速上手
  • 小游戏基础教程Adapter(适配器)
  • 小游戏基础教程对引擎的支持
  • 小游戏基础教程模块化
  • 微信小游戏教程能力
  • 小游戏能力教程音频播放
  • 小游戏能力教程文件系统
  • 微信小游戏教程可用性
  • 小游戏可用性教程调试
  • 小游戏可用性教程性能
  • 小游戏可用性教程多线程Worker
  • 微信小游戏教程开放能力
  • 小游戏开放能力教程用户授权
  • 小游戏开放能力教程用户登录态签名
  • 小游戏开放能力教程获取二维码
  • 小游戏开放能力教程转发
  • 小游戏开放能力教程用户数据的签名验证和加解密
  • 微信小游戏API
  • 微信小游戏API渲染
  • 微信小游戏渲染API画布
  • 小游戏渲染APIwxcreateCanvas创建画布对象
  • 小游戏渲染APICanvas画布对象
  • 小游戏渲染APIRenderingContext渲染环境
  • 小游戏渲染APICanvasgetContext获取画布对象的绘图上下文
  • 小游戏渲染APICanvastoTempFilePath
  • 小游戏渲染APICanvastoDataURL
  • 小游戏渲染APICanvastoTempFilePathSync
  • 微信小游戏渲染API图片
  • 小游戏渲染APIImagewxcreateImage创建一个图片对象
  • 小游戏渲染APIImage图片对象
  • 微信小游戏渲染API字体
  • 小游戏渲染APIwxgetTextLineHeight获取一行文本的行高
  • 小游戏渲染APIwxloadFont加载自定义字体文件
  • 微信小游戏渲染API帧率
  • 小游戏渲染APIwxsetPreferredFramesPerSecond
  • 小游戏渲染APIcancelAnimationFrame
  • 小游戏渲染APIrequestAnimationFrame
  • 微信小游戏API系统
  • 微信小游戏系统API生命周期
  • 小游戏系统APIwxexitMiniProgram退出
  • 小游戏系统APIwxgetLaunchOptionsSync
  • 小游戏系统APIwxonHide
  • 小游戏系统APIwxoffHide
  • 小游戏系统APIwxonShow
  • 小游戏系统APIwxoffShow
  • 微信小游戏系统API系统信息
  • 小游戏系统APIwxgetSystemInfo获取系统信息
  • 小游戏系统APIwxgetSystemInfoSync
  • 微信小游戏系统API系统事件
  • 小游戏系统APIwxonAudioInterruptionEnd
  • 小游戏系统APIwxoffAudioInterruptionEnd
  • 小游戏系统APIwxonAudioInterruptionBegin
  • 小游戏系统APIwxoffAudioInterruptionBegin
  • 小游戏系统APIwxonError
  • 小游戏系统APIwxoffError
  • 微信小游戏系统API触摸事件
  • 小游戏系统APIwxonTouchStart
  • 小游戏系统APIwxoffTouchStart
  • 小游戏系统APIwxonTouchMove
  • 小游戏系统APIwxoffTouchMove
  • 小游戏系统APIwxonTouchEnd
  • 小游戏系统APIwxoffTouchEnd
  • 小游戏系统APIwxonTouchCancel
  • 小游戏系统APIwxoffTouchCancel
  • 小游戏系统APITouch触点
  • 微信小游戏API设备
  • 微信小游戏设备API加速计
  • 小游戏设备APIwxonAccelerometerChange
  • 小游戏设备APIwxstartAccelerometer
  • 小游戏设备APIwxstopAccelerometer
  • 微信小游戏设备API电量
  • 小游戏设备APIwxgetBatteryInfo
  • 小游戏设备APIwxgetBatteryInfoSync
  • 微信小游戏设备API剪贴板
  • 小游戏设备APIwxgetClipboardData
  • 小游戏设备APIwxsetClipboardData
  • 微信小游戏设备API罗盘
  • 小游戏设备APIwxonCompassChange
  • 小游戏设备APIwxstartCompass
  • 小游戏设备APIwxstopCompass
  • 微信小游戏设备API网络
  • 小游戏设备APIwxgetNetworkType
  • 小游戏设备APIwxonNetworkStatusChange
  • 微信小游戏设备API屏幕
  • 小游戏设备APIwxgetScreenBrightness
  • 小游戏设备APIwxsetKeepScreenOn
  • 小游戏设备APIwxsetScreenBrightness
  • 微信小游戏设备API振动
  • 小游戏设备APIwxvibrateShort
  • 小游戏设备APIwxvibrateLong
  • 微信小游戏API文件
  • 小游戏文件APIwxgetFileSystemManager
  • 小游戏文件APIFileSystemManager文件管理器
  • 小游戏文件APIFileSystemManageraccess
  • 小游戏文件APIFileSystemManageraccessSync
  • 小游戏文件APIFileSystemManagercopyFile复制文件
  • 小游戏文件APIFileSystemManagercopyFileSync
  • 小游戏文件APIFileSystemManagergetFileInfo
  • 小游戏文件APIFileSystemManagergetSavedFileList
  • 小游戏文件APIFileSystemManagermkdir创建目录
  • 小游戏文件APIFileSystemManagermkdirSync
  • 小游戏文件APIFileSystemManagerrmdir删除目录
  • 小游戏文件APIFileSystemManagerreaddir
  • 小游戏文件APIFileSystemManagerremoveSavedFile
  • 小游戏文件APIFileSystemManagerreadFile
  • 小游戏文件APIFileSystemManagerrename
  • 小游戏文件APIFileSystemManagerreaddirSync
  • 小游戏文件APIFileSystemManagerrenameSync
  • 小游戏文件APIFileSystemManagerreadFileSync
  • 小游戏文件APIFileSystemManagerrmdirSync
  • 小游戏文件APIFileSystemManagersaveFile
  • 小游戏文件APIFileSystemManagerstat
  • 小游戏文件APIStatsFileSystemManagerstatSync
  • 小游戏文件APIFileSystemManagerunlink删除文件
  • 小游戏文件APIFileSystemManagerunzip解压文件
  • 小游戏文件APIFileSystemManagerunlinkSync
  • 小游戏文件APIFileSystemManagerunzipSync
  • 小游戏文件APIFileSystemManagerwriteFile写文件
  • 小游戏文件APIFileSystemManagerwriteFileSync
  • 微信小游戏API位置
  • 小游戏位置APIwxgetLocation
  • 微信小游戏API网络
  • 微信小游戏网络API下载
  • 小游戏网络APIwxdownloadFile
  • 小游戏网络APIDownloadTask
  • 小游戏网络APIDownloadTaskabort
  • 小游戏网络APIDownloadTaskonProgressUpdate
  • 微信小游戏网络API发起请求
  • 小游戏网络APIwxrequest发起网络请求
  • 小游戏网络APIRequestTask网络请求任务对象
  • 小游戏网络APIRequestTaskabort
  • 微信小游戏网络APIWebSocket
  • 小游戏网络APIwxconnectSocket
  • 小游戏网络APIwxcloseSocket关闭WeSocket连接
  • 小游戏网络APIwxonSocketOpen
  • 小游戏网络APIwxonSocketClose
  • 小游戏网络APIwxonSocketMessage
  • 小游戏网络APIwxonSocketError
  • 小游戏网络APIwxsendSocketMessage
  • 小游戏网络APISocketTask
  • 小游戏网络APISocketTaskclose
  • 小游戏网络APISocketTaskonOpen
  • 小游戏网络APISocketTaskonClose
  • 小游戏网络APISocketTaskonError
  • 小游戏网络APISocketTaskonMessage
  • 小游戏网络APISocketTasksend
  • 微信小游戏网络API上传
  • 小游戏网络APIwxuploadFile
  • 小游戏网络APIUploadTask
  • 小游戏网络APIUploadTaskabort
  • 小游戏网络APIUploadTaskonProgressUpdate
  • 微信小游戏API开放接口
  • 微信小游戏开放接口API登录
  • 小游戏网络APIwxcheckSession
  • 小游戏开放接口APIwxlogin
  • 微信小游戏开放接口API授权
  • 小游戏开放接口APIwxauthorize
  • 微信小游戏开放接口API用户信息
  • 小游戏开放接口APIwxgetUserInfo
  • 小游戏开放接口APIUserInfo
  • 微信小游戏开放接口API设置
  • 小游戏开放接口APIwxgetSetting
  • 小游戏开放接口APIwxopenSetting
  • 小游戏开放接口APIAuthSetting
  • 微信小游戏开放接口API微信运动
  • 小游戏开发接口APIwxgetWeRunData
  • 微信小游戏API转发
  • 小游戏转发APIwxgetShareInfo
  • 小游戏转发APIwxhideShareMenu
  • 小游戏转发APIwxonShareAppMessage
  • 小游戏转发APIwxoffShareAppMessage
  • 小游戏转发APIwxshowShareMenu
  • 小游戏转发APIwxshareAppMessage
  • 小游戏转发APIwxupdateShareMenu
  • 微信小游戏API调试
  • 小游戏调试APIwxsetEnableDebug
  • 微信小游戏API数据缓存
  • 小游戏数据缓存APIwxclearStorage
  • 小游戏数据缓存APIwxclearStorageSync
  • 小游戏数据缓存APIwxgetStorage
  • 小游戏数据缓存APIwxgetStorageInfo
  • 小游戏数据缓存APIwxgetStorageSync
  • 小游戏数据缓存APIwxgetStorageInfoSync
  • 小游戏数据缓存APIwxremoveStorage
  • 小游戏数据缓存APIwxremoveStorageSync
  • 小游戏数据缓存APIwxsetStorage
  • 小游戏数据缓存APIwxsetStorageSync
  • 微信小游戏API界面
  • 微信小游戏界面API交互
  • 小游戏界面APIwxhideToast
  • 小游戏界面APIwxhideLoading
  • 小游戏界面APIwxshowModal
  • 小游戏界面APIwxshowToast
  • 小游戏界面APIwxshowLoading
  • 小游戏界面APIwxshowActionSheet
  • 微信小游戏界面API键盘
  • 小游戏界面APIwxhideKeyboard
  • 小游戏界面APIwxonKeyboardInput
  • 小游戏界面APIwxoffKeyboardInput
  • 小游戏界面APIwxonKeyboardConfirm
  • 小游戏界面APIwxoffKeyboardConfirm
  • 小游戏界面APIwxonKeyboardComplete
  • 小游戏界面APIwxoffKeyboardComplete
  • 小游戏界面APIwxshowKeyboard显示键盘
  • 微信小游戏界面API菜单
  • 小游戏界面APIwxsetMenuStyle
  • 微信小游戏界面API窗口
  • 小游戏界面APIwxonWindowResize
  • 小游戏界面APIwxoffWindowResize
  • 微信小游戏APIWorker
  • 小游戏APIwxcreateWorker
  • 小游戏APIWorker
  • 小游戏APIWorkeronMessage
  • 小游戏APIWorkerpostMessage
  • 小游戏APIWorkerterminate
  • 微信小游戏API媒体
  • 微信小游戏媒体API音频
  • 小游戏媒体APIwxcreateInnerAudioContext
  • 小游戏媒体APIInnerAudioContext
  • InnerAudioContextdestroy
  • InnerAudioContextoffCanplay
  • InnerAudioContextonPause
  • InnerAudioContextoffPause
  • InnerAudioContextonStop
  • InnerAudioContextoffStop
  • InnerAudioContextonEnded
  • InnerAudioContextoffEnded
  • InnerAudioContextonTimeUpdate
  • InnerAudioContextonPlay
  • InnerAudioContextonError
  • InnerAudioContextonWaiting
  • InnerAudioContextoffWaiting
  • InnerAudioContextonSeeking
  • InnerAudioContextoffSeeking
  • InnerAudioContextonSeeked
  • InnerAudioContextoffSeeked
  • InnerAudioContextonCanplay
  • InnerAudioContextoffPlay
  • InnerAudioContextoffTimeUpdate
  • InnerAudioContextoffError
  • InnerAudioContextpause
  • InnerAudioContextplay
  • InnerAudioContextseek
  • 微信小游戏录音
  • RecorderManager
  • RecorderManagerstart
  • RecorderManagerpause
  • RecorderManagerresume
  • RecorderManagerstop
  • RecorderManageronStart
  • RecorderManageronPause
  • RecorderManageronStop
  • RecorderManageronFrameRecorded
  • RecorderManageronError
  • RecorderManagergetRecorderManager
  • 微信小游戏视频
  • Video
  • VideoonWaiting
  • VideoonPlay
  • VideoonPause
  • VideoonEnded
  • VideoonTimeUpdate
  • VideoonError
  • Videoplay
  • Videopause
  • Videostop
  • Videoseek
  • VideorequestFullScreen
  • VideoexitFullScreen
  • createVideo
  • 微信小游戏性能
  • getPerformance
  • Performance
  • Performancenow
  • setPreferredFramesPerSecond
  • triggerGC
  • 微信小游戏数据上报
  • gameLoginReport
  • gameLogoutReport
  • 微信小游戏工具
  • 微信小游戏工具概览
  • 微信小游戏工具界面
  • 小游戏工具启动页
  • 小游戏工具主界面
  • 小游戏工具菜单栏
  • 小游戏工具工具栏
  • 小游戏工具模拟器
  • 小游戏工具设置页
  • 小游戏工具项目页卡
  • 小游戏工具快捷键
  • 小游戏工具调试
  • 小游戏工具命令行调用
  • 小游戏工具HTTP调用
  • 微信小游戏工具下载
  • 微信小程序开发文档
  • httpdocscocoscomcreatormanualzhpublishpublishwechatgamehtml
  • httpdeveloperegretcomcngithubegretdocsEngine2Dminigameintroductionindexhtml
  • httpsldclayaboxcomdocnavzhas345
  • RenderingContext
  • Adapter
  • 微信小游戏教程Adapter(适配器)
  • 微信小游戏开发文档小游戏开发基础教程模块化
  • 微信小程序小游戏开发文档小游戏快速上手教程已更新最新版
  • chooseImage
  • 微信小游戏获取更多转发信息
  • saveImageToPhotosAlbum
  • previewImage
  • ImageFile
  • w3cschoolcn
  • 查看完整版笔记