wechat-miniprogram / minigame-unity-webgl-transform

Wechat Mini Game Unity engine adapter documents.
https://wechat-miniprogram.github.io/minigame-unity-webgl-transform/
MIT License
3.01k stars 458 forks source link

Unity 游戏转微信小游戏出错 #764

Closed uvw327 closed 6 months ago

uvw327 commented 6 months ago

描述Bug

将这个 Unity 项目导出到 Android 和 WebGL 在PC浏览器运行均正常,里面也没有用到什么复杂的接口。只有 Sprite 的移动,播放 Animation Clip 和播放声音,然后就是一些坐标的判断。加了几个刚体和多边形碰撞盒,理论上这么简单的东西,转微信小游戏应该不会失败吧,但它确实报错了。

[Builder] BuildPlayer failed. emscriptenArgs: -s EXPORTED_FUNCTIONS=_sbrk,_emscripten_stack_get_base,_emscripten_stack_get_end -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s TOTAL_MEMORY=256MB --profiling-funcs -s EXPORTED_RUNTIME_METHODS='["ccall","cwrap","stackTrace","addRunDependency","removeRunDependency","FS_createPath","FS_createDataFile","stackTrace","writeStackCookie","checkStackCookie","lengthBytesUTF8","stringToUTF8"]' UnityEngine.Debug:LogFormat (string,object[]) WeChatWASM.WXConvertCore:Build () (at ./Library/PackageCache/com.qq.weixin.minigame@1601133807/Editor/WXConvertCore.cs:652) WeChatWASM.WXConvertCore:DoExport (bool) (at ./Library/PackageCache/com.qq.weixin.minigame@1601133807/Editor/WXConvertCore.cs:131) WeChatWASM.WXSettingsHelper:OnBuildButtonGUI (UnityEditor.EditorWindow) (at ./Library/PackageCache/com.qq.weixin.minigame@1601133807/Editor/WXEditorSettingHelper.cs:303) WeChatWASM.WXEditorWin:OnGUI () (at ./Library/PackageCache/com.qq.weixin.minigame@1601133807/Editor/WXEditorWindow.cs:43) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

运行环境

Windows10/Unity2022.3.20f1c1/202405151937/WX-SDK使用Unity Package Manager 导入/WebGL
liuxinyumocn commented 6 months ago

能否提供相应的源码工程我们排查一下?我们这边测试工程2022版本暂未发现导出异常。

uvw327 commented 6 months ago

能否提供相应的源码工程我们排查一下?我们这边测试工程2022版本暂未发现导出异常。

应该和我的代码无关,因为我用同样版本的 Unity Editor 新建了一个空的2D项目,拖了一张图片到场景中,没有任何其它代码,然后在 Build Settings 中选 WebGL 平台,再使用 Package 的方式安装微信小游戏转换插件,使用这个插件转换时,还是会出现同样的错误。而且我试了不同的版本,甚至包括团结引擎内置的转换插件,都会报同样的错误。

感觉非常奇怪,我想应该不是插件问题,可能是我使用的方式不对吧,我再试试,不行我重装下系统看看怎么样

我最初是按照这个文档来转换的 https://wechat-miniprogram.github.io/minigame-unity-webgl-transform/Design/Transform.html

uvw327 commented 6 months ago

问题解决了。

非常奇怪,我使用 3D (Core) 模板创建的项目就可以正常转换为微信小游戏项目,但是 2D (Core) 模板就不行。

后来我发现好像是两个模板有些设置是不太一样导致的,不仅是带的一些Components不同的问题。

经过一些配置后,这个新建的2D项目也是可以转换成功的。

解决办法:

在 Edit > Project Settings > Weixin MiniGame Settings > Other Settings 中,删除 Graphics APIs 中默认的 WebGL1,增加一个 WebGL2

禁止 Auto Graphics API 选项

Color Space 选择为 Gamma

下次重新转换的时候,不要从 File > Build Settings 入口进入转换(特别对于团结引擎,Unity Editor还没测试),因为它好像会覆盖之前的配置,我试过如果从菜单『微信小游戏』进入转换就不会有问题

在『微信小游戏』界面中应该也要勾选 WebGL2.0(beta)

总感觉这个解决办法很怪,没啥逻辑,但它确实可以works,希望了解的哥们可以解释一下

liuxinyumocn commented 6 months ago

Unity引擎需要使用微信小游戏面板进行导出,面板导出时会对一些配置做专项的变动,直接在 Settings 中build是无法修改变动的。

uvw327 commented 5 months ago

插件版本升级到 202405171605 后不再报这个错了