2023-11-10
许多开发者对游戏是正确的 Cocos、Egret、Laya、Unity 非常关心游戏引擎的支持。但是游戏不同于浏览器 JavaScript 没有工作环境 BOM 和 DOM API。然而,基本上所有的依据 HTML5 游戏引擎都是由浏览器提供的 BOM 和 DOM API 的。因此,要在小游戏中应用模块,必须优化模块。
目前,Cocos、Egret、Laya 已完成自身模块和工具对小游戏的兼容性和支持,相应的官方文件已经介绍了连接小游戏的开发。
不管是什么样的模块,游戏运行中最后做的大部分事情都是 随着用户互动升级图片和播放声音。制作小游戏的知识是 JavaScript,在发动机底部,需要通过 JavaScript 启用制作 API 和声频 API。制作小游戏的知识是 JavaScript,在发动机底部,需要通过 JavaScript 启用制作 API 和声频 API。
一段 JavaScript 代码可以在运行过程中调用 API 是取决于 的。最常见的人 乃至不是 JavaScript 语言的核心部分是浏览器的寄主环境。浏览器是常见的寄主环境,Node.js 等。浏览器有 BOM 和 DOM API,而 Node.js 则没有;Node.js 有 fs、net 等 Node.js 关键模块提供的文档和网络 API,而且浏览器没有这个模块。例如,下一段可以在浏览器中正常运行的编码 Node.js 在运行过程中会出错。
由于 Node.js 这个寄主环境根本没有给予 document 这个内置的全局变量。
小游戏的工作环境是不同于浏览器的寄主环境,没有提供 BOM 和 DOM API,提供的是 wx API。根据 wx API,开发者可以使用它 Native 提供制作、音视频、网络、文件等级别。

如果你想建立画板,你需要使用它 wx.createCanvas()

如果你想创建一个声频目标,你需要使用它 wx.createInnerAudioContext()
假如你想要屏幕的宽度和高度,你需要启用 wx.getSystemInfoSync()

但是基于 HTML5 游戏引擎将通过以下方式建立画板和声频,以获得屏幕宽度和高度
这个时候会出错。原因如前面提到的,游戏的寄主环境根本没有给出。 document 和 window 这两个内置在浏览器中的全局变量。因为游戏环境是不同于浏览器的寄主环境。因为游戏环境是不同于浏览器的寄主环境。
因此,基本上所有的基础 HTML5 游戏引擎不能直接迁移到小游戏中,因为模块可以或多或少地使用 BOM 和 DOM 这种浏览器环境是独特的 API。只有优化模块,才能优化模块 BOM 和 DOM API 的启用改为 wx API 模块可以在游戏环境中运行。
除了改变模块,还有一种兼容的方法,在引擎和游戏逻辑代码之间添加一层模拟 BOM 和 DOM API 又称兼容层 Adapter。根据整体情况,这层兼容层在整体情况下 wx API 模拟模块访问的部分 window 和 document 对象属和方式,使模块感觉不到环境的差异。


Adapter 它是用户代码,而不是基础库的一部分。有关 Adapter 说明,参考教程 Adapter。
删除上述适合小游戏平台的游戏引擎。如果开发者想使用其他游戏引擎 HTML5 游戏引擎开发游戏也可以,但需要改变。改变构思的建议以引入通用性为基础 Adapter 尝试操作,然后逐一处理遇到的困难。