minigame-unity-webgl-transform
minigame-unity-webgl-transform copied to clipboard
在 Unity2021.3.4f1 编辑器中,转换界面会卡住
在 Unity2021.3.4f1 编辑器中,导出并转换小游戏后,界面不消失,导致每次都要任务管理器结束unity进程,即使是最简单的工程也是如此. 当然等很久以后确实是转换成功的,就是界面不消失,需要任务管理器结束unity. 同一台电脑中的Unity2020.3.23f1c1中就没有这问题 系统是win7,64位
Unity本身导出WebGL可以成功吗?
可以的啊 而且是和unityEditor版本有关 同一台电脑中的Unity2020.3.23f1c1中就没有这问题 2021.3.4f1就会出现这个
先导出WebGL,然后用第二个选项将WebGL转为小游戏。 如果依然卡死的话,在EditorWindows.cs断点看看哪一步会出错.
这里
WeChatWASM.UnityUtil.RunCmd(nodePath, string.Format($"--experimental-modules dump_wasm_symbol.mjs {dst}"), path);
// 如果是2021版本,官方symbols产生有BUG,这里需要用工具将embedded的函数名提取出来
#if UNITY_2021_2_OR_NEWER var path = "Assets/WX-WASM-SDK/Editor/Node"; var nodePath = "node"; #if UNITY_EDITOR_OSX nodePath = "/usr/local/bin/node"; #endif WeChatWASM.UnityUtil.RunCmd(nodePath, string.Format($"--experimental-modules dump_wasm_symbol.mjs {dst}"), path); UnityEngine.Debug.LogError($"Unity 2021版本使用Embeded Symbols, 发布前请使用WASM代码分包进行优化"); #endif
看看你的unity工程路径是不是有空格, 我把这个命令行放cmd试了一下,发现有空格不行,没有结果返回, 把路径的空格去掉就可以了
- 如@lanqingruoxi 所言,看下Unity工程是否含有空格
- 安装的Node版本是否太旧
工程没有空格 后面我特意新建了个空工程,也是一样,那个node进程一直不结束 我怀疑是对node版本有要求 版本是12.18.3
我的版本是 v14.15.0, unity2021.3.6f1, 打包没问题的,要不你升级node版本试试
我的版本是 v14.15.0, unity2021.3.6f1, 打包没问题的,要不你升级node版本试试
电脑是win7,node最高只能到13.14.0,还是卡死了 不过我把那代码注释了,反正不用那个符号也能跑
我的版本是 v14.15.0, unity2021.3.6f1, 打包没问题的,要不你升级node版本试试
谢谢大佬了
如@lanqingruoxi 所言,看下Unity工程是否含有空格
- 安装的Node版本是否太旧
大佬,我把那代码屏蔽有什么影响吗?
不建议屏蔽。
为何有这段逻辑? Unity2021版本产生的分离符号(external symbols)存在问题,有很多函数并未准确生成符号表。因此我们让代码包生成embeded symbols,然后使用nodejs后处理生成符号表。
有什么影响?
- 没有符号表无法使用wasm代码分包能力
- embeded symbols使得代码包很大,而如果你修改WXEditorWindow.cs为external symbols又会由于Unity缺陷导致符号不全,线上查问题困难。