+ All Categories
Home > Documents > ² Unity WEB-IR WebGL WASM EMCCØ · 5. cXf¿IëB Web j@·úD× FÉ 6. cXBØj native D SèC ±...

² Unity WEB-IR WebGL WASM EMCCØ · 5. cXf¿IëB Web j@·úD× FÉ 6. cXBØj native D SèC ±...

Date post: 19-Jul-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
16
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
Transcript
  • 推荐使用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

    邮箱:[email protected]

    QQ:2931771

    Facebook:https://www.facebook.com/MujiGames/

    https://www.facebook.com/MujiGames/

Recommended