minigame-unity-webgl-transform icon indicating copy to clipboard operation
minigame-unity-webgl-transform copied to clipboard

在 Unity2021.3.4f1 编辑器中,转换界面会卡住

Open FourTest opened this issue 2 years ago • 13 comments

在 Unity2021.3.4f1 编辑器中,导出并转换小游戏后,界面不消失,导致每次都要任务管理器结束unity进程,即使是最简单的工程也是如此. 当然等很久以后确实是转换成功的,就是界面不消失,需要任务管理器结束unity. 同一台电脑中的Unity2020.3.23f1c1中就没有这问题 系统是win7,64位

企业微信截图_16572540923601

FourTest avatar Jul 08 '22 04:07 FourTest

企业微信截图_16572604855017

FourTest avatar Jul 08 '22 06:07 FourTest

Unity本身导出WebGL可以成功吗?

Oooocean avatar Jul 28 '22 14:07 Oooocean

可以的啊 而且是和unityEditor版本有关 同一台电脑中的Unity2020.3.23f1c1中就没有这问题 2021.3.4f1就会出现这个

FourTest avatar Jul 29 '22 01:07 FourTest

先导出WebGL,然后用第二个选项将WebGL转为小游戏。 如果依然卡死的话,在EditorWindows.cs断点看看哪一步会出错.

Oooocean avatar Jul 30 '22 02:07 Oooocean

1 这里 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

FourTest avatar Aug 01 '22 02:08 FourTest

看看你的unity工程路径是不是有空格, 我把这个命令行放cmd试了一下,发现有空格不行,没有结果返回, 把路径的空格去掉就可以了

lanqingruoxi avatar Aug 01 '22 05:08 lanqingruoxi

  1. 如@lanqingruoxi 所言,看下Unity工程是否含有空格
  2. 安装的Node版本是否太旧

Oooocean avatar Aug 01 '22 14:08 Oooocean

工程没有空格 后面我特意新建了个空工程,也是一样,那个node进程一直不结束 我怀疑是对node版本有要求 版本是12.18.3

FourTest avatar Aug 02 '22 01:08 FourTest

我的版本是 v14.15.0, unity2021.3.6f1, 打包没问题的,要不你升级node版本试试

lanqingruoxi avatar Aug 02 '22 01:08 lanqingruoxi

我的版本是 v14.15.0, unity2021.3.6f1, 打包没问题的,要不你升级node版本试试

电脑是win7,node最高只能到13.14.0,还是卡死了 不过我把那代码注释了,反正不用那个符号也能跑

FourTest avatar Aug 02 '22 02:08 FourTest

我的版本是 v14.15.0, unity2021.3.6f1, 打包没问题的,要不你升级node版本试试

谢谢大佬了

FourTest avatar Aug 02 '22 02:08 FourTest

  1. 如@lanqingruoxi 所言,看下Unity工程是否含有空格

    1. 安装的Node版本是否太旧

大佬,我把那代码屏蔽有什么影响吗?

FourTest avatar Aug 02 '22 02:08 FourTest

不建议屏蔽。

为何有这段逻辑? Unity2021版本产生的分离符号(external symbols)存在问题,有很多函数并未准确生成符号表。因此我们让代码包生成embeded symbols,然后使用nodejs后处理生成符号表。

有什么影响?

  • 没有符号表无法使用wasm代码分包能力
  • embeded symbols使得代码包很大,而如果你修改WXEditorWindow.cs为external symbols又会由于Unity缺陷导致符号不全,线上查问题困难。

Oooocean avatar Aug 07 '22 10:08 Oooocean