近期想把一个Unity小项目发布到UnityWebGL时遇到了麻烦。
主要的报错信息以及Console如下:
Failed running D:\Program Files\Unity\Editor\Data\il2cpp/build/il2cpp.exe –convert-to-cpp –dotnetprofile=”unityjit” –compile-cpp –libil2cpp-static–platform=”WebGL” –architecture=”EmscriptenJavaScript”–configuration=”Release”
Exception: D:\Program Files\Unity\Editor\Data\il2cpp/build/il2cpp.exe did not run properly!
UnityEditorInternal.Runner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:130)…..
Unity版本为2017.2.0 personal 64位
看了下网络上其他的解决方案如清除il2cpp_cache文件夹内容也不行
最后是把工程文件的路径和发布路径全改成英文名,不能含中文,就发布成功了。
字体渲染
Unity WebGL支持所有Unity平台的动态字体渲染。但是,它无法访问用户计算机上安装的字体,因此所使用的任何字体都必须包含在项目文件夹中(包括国际字符的任何后备字体或字体的粗体/斜体版本),并设置为后备字体名称。
技术概述
要在WebGL中运行,所有代码都需要是JavaScript。我们使用emscripten编译器工具链将Unity运行时代码(用C和C ++编写)交叉编译为asm.js JavaScript。asm.js是一个非常优化的JavaScript子集,它允许JavaScript引擎将asm.js代码AOT编译成非常有效的本机代码。
为了将.NET游戏代码(您的C#和UnityScript脚本)转换为JavaScript,我们使用一种名为IL2CPP
的技术,这是。IL2CPP使用.NET字节码并将其转换为相应的C ++源文件,然后使用emscripten编译以转换脚本
中的JavaScript。
增量构建
IL2CPP为您的项目生成的C ++代码是逐步编译的; 也就是说,只生成了自上次构建以来再次编译的C ++代码。未更改的源代码重新使用为先前构建生成的相同目标文件。用于增量C ++构建的目标文件存储在Unity项目的Library / il2cpp_cache目录中。
要执行不使用增量编译的生成的C ++代码的干净,从头开始构建,请删除Unity项目中的Library / il2cpp_cache目录。请注意,如果Unity Editor版本与用于以前的WebGL构建的版本不同,Unity会自动执行干净的,从头开始的构建。
https://docs.unity3d.com/Manual/webgl-gettingstarted.html 参考WebGL发布API