未定义的符号:Unity WebGL 构建上的 LoadExtern

Undefined Symbol: LoadExtern on Unity WebGL build

提问人:dedretrowave 提问时间:1/10/2023 最后编辑:dedretrowave 更新时间:1/11/2023 访问量:1340

问:

我有一个类 SaveSystem,其中包含 2 个 extern 方法:SaveExtern、LoadExtern 这些方法应该从库外部加载,以保持云进度保存。但在此之后,Unity 开始在构建时抛出这些错误。可能的原因是什么,我该如何解决它。

错误

Library\Bee\\artifacts\WebGL\build\debug_WebGL_wasm\build.js: undefined symbol:
LoadExtern (referenced by top-level compiled C/C++ code)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

法典

[DllImport("__Internal")]
private static extern void SaveExtern(string data);
    
[DllImport("__Internal")]
private static extern void LoadExtern();

我尝试重新安装 Unity,从 \Library 中删除所有内容,包括 #if UNITY_WEBGL#if!UNITY_EDITOR & & UNITY_WEBGL

C# unity-游戏引擎 未解析-外部

评论

0赞 derHugo 1/10/2023
请出示您的JS代码..听起来那里缺少/有语法错误LoadExtern
0赞 dedretrowave 1/10/2023
js 代码必须在构建后用 jslib 编写,因为 jslib 实际上是在构建后创建的
0赞 derHugo 1/10/2023
它需要在你构建需要存在的那一刻就存在,然后与你的其余代码一起编译到 Web 程序集中......jslib
0赞 dedretrowave 1/10/2023
好吧,也许我理解错了什么,我会检查一下,谢谢
0赞 dedretrowave 1/11/2023
Tysm兄弟,我真的错过了这一点

答:

0赞 dedretrowave 1/11/2023 #1

答案很简单:

  • 您需要在 /Assets/Plugins 文件夹中创建一个文件 anyname.jslib,并在此文件中实现所需的方法。

您可以在此处找到有关它的信息。

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html

非常感谢 derHugo 让我下定决心