推荐使用Unity的稳定并可以支持 WebAssembly 的版本,譬如下面截图所示的5.6.5p3或者2017.4.1f1 LTS版,其实从 Unity 5.6开始到最新的版本都支持WebAssembly,但是由于有些版本在发布时期会引入一些 Bug,所以建议使用对应版本的补丁版或者 LTS 版,可以避免很多已知错误。
*补丁版下载:https://unity3d.com/unity/qa/patch-releases
*LTS 版下载:https://unity3d.com/unity/qa/lts-releases
*什么是我们首选的版本:那些最接近您当前开发所使用的版本。
该补丁帮助 Unity WEB-IR 版本支持多线程,GC 和 BSD Socket,如果您的游戏用不到这些技术,您可以忽略这些补丁和这一节。
请在安装补丁前告知我们您所使用的 Unity的版本,以方便我们为您提供对应的补丁包。
如何用 Unity 输出 WEB-IR 使用的 WebGL WASM EMCC版版本说明
可选的:安装 WEB-IR 补丁
https://unity3d.com/unity/qa/patch-releaseshttps://unity3d.com/unity/qa/lts-releases
将获取的补丁包解压,然后覆盖您当前所用的 Unity 安装文件上(其实我们推荐更加精确可靠的对比合并,譬如使用像 BeyondCompare 这样的工具来完成整合,这样既可以不依赖于特定的版本,又可以了解代码的变化),譬如以 macOS 版为例,安装路径在:/Applications/Unity,注意覆盖两处,一个是PlaybackEngines/WebGLSupport/BuildTools/Emscripten,另一个是Unity.app/Contents/il2cpp,我们建议您使用一个独立的 Unity 版本来完成该工作,以免污染了当前的工作环境。
是否启用补丁,可以通过PlaybackEngines/WebGLSupport/BuildTools/Emscripten/emcc.py 中的__JSIR__定义来管理(注释或者不注释),
查找这个定义,如果需要启动补丁就把该注释打开,如果关闭补丁就注释掉该行,不过需要注
意的是在每次切换时要删除游戏项目中Library目录下面的il2cpp_cache和webgl_cache来确保切换有效,否则会遇到切换不起作用的问题。
1. 由于iOS在11版本以后才支持WebAssembly(WASM),并且对CPU的Spectre漏洞补丁导致了iOS 11.2.2到11.2.6会造成WASM Code崩溃,所以建议iOS的测试和应用环境为11.3及以上版本(11.3+);
2. 建议首选支持 WebGL 1.0,对应 OpenGL ES 2.0,因为这个版本的 WebGL 为广大浏览器所支持,尤其 Apple 的 Safari 到目前为止也只支持 WebGL 1.0;
3. 对于游戏中的 HTTP Request,请使用 Unity 官方推荐的WWW 或者UnityWebRequest 方式,不要使用C#自带的WebRequest,从而保证 WebGL 版本的兼容性;
4. 移除不支持HTML5,JavaScript 或者不必要的第三方SDK,譬如腾讯的MSDK,GCloudVoice SDK,GameAnalytics等;
5. 移除目前还不被 Web 直接支持的功能,譬如截屏,分享等;
6. 移除原始版本中 native 的热更新系统,因为 WEB-IR 本身天然支持热更新,所以会和 native 热更新产生冲突,所以 WEB-IR 版本无需提供 native 形式的热更新;
7. 如果使用AssetBundle包,请使用LoadFromFile 的形式本地加载,不要使用其他的远程加载机制,譬如 WWW 的方式,因为 WEB-IR 已经支持虚拟化的文件系统,无需做额外的远程加载,这个操作流程您可以参考我们提供的一个 Demo 案例 [email protected]:dev/runner.git 并注意阅读该案例的Readme;
前期准备说明
8. 需要注意,某些声音格式在iOS的Safari和WkWebView上会引起解码错误,从而导致浏览器崩溃,所以建议声音编码格式要尽量保证普通,譬如标准的mp3格式;
9. 如果使用 DOTween 插件,请不要勾选 Safe Mode ,并且在删除对象之前停止动画,因为目前 WEB-IR 为了性能考虑暂不支持 Try/Catch 这种机制,而 DOTween 在 Safe Mode 下是通过 Try/Catch 来管理对象的,这会导致异常;
配置 Build 参数
点击 File 选择 Build Settings
在弹出的对话框里面选择 WebGL,然后点击 Player Settings...
在Inspector 里面打开WebGL 的 Player Settings 设置
在默认的选项基础上,在 Other Settings 里面不要勾选 Auto Graphics API,并且要选择 WebGL 1.0
在 Publishing Settings 里面,设置 Enable Exceptions 为 None,设置 Compression Format 为 Disabled,勾选 Debug Symbols 和 WebAssembly。
*如果您使用了很多的 DoTween 而又无法修改,可以尝试打开异常捕获并同时在 DoTween 的设置面板里激活 Safe Mode 模式,但必须要注意这会带来很明显的性能损失。如下图:
为了更稳定地运行,尤其在那些对内存限制比较苛刻的环境(譬如iPhone 6/6p)下稳定运行,请首选把WebGL Memory Size设置成128M,如果您确定游戏所需的运行内存肯定大于这
个值,那么再设置成您所需要的实际内存数量。在您发包给我们时请告知我们您的这一设置
值。
当配置完成后,点击 Build Settings 的 Build 按钮
输出 Unity WebGL WASM EMCC版本
在弹出的对话框里面选择要保存的路径,Save 后就等待编译的完成,之后将这个目录整体打包并发送给我们
联系我们:
官网:www.mujitech.cn
QQ:2931771
Facebook:https://www.facebook.com/MujiGames/
https://www.facebook.com/MujiGames/