尝试用我的C#代码实现JS库。 很简单,但我收到了这个错误:
EntryPointNotFoundException:测试 TalkDB.Start()(在Assets / Scripts / TalkDB.cs:30)
C#代码位于scripts文件夹中,JS库位于插件/ webgl,扩展名为.jslib。 另请阅读本文,但不知道我遗漏了什么:https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html?_ga=1.27144893.1658401563.1487328483
C#代码:
public class TalkDB : MonoBehaviour
{
[DllImport("__Internal")]
private static extern void Test();
void Start()
{
Test();
}
}
JS Library:
var HighscorePlugin = {
Test: function()
{
window.alert("Testing 1, 2, 3,...");
}
};
mergeInto(LibraryManager.library, HighscorePlugin);
答案 0 :(得分:1)
找到答案,其实很简单。 只在从服务器运行时,我在本地运行时不起作用。 为了防止出现这种错误,应该这样做:
#if UNITY_WEBGL&& !UNITY_EDITOR
[的DllImport(" __内部&#34)] private static extern void Test(); 的#else
//其他一些模仿你想做的事情
#ENDIF
在调用函数时也这样做。 快乐编程:)
答案 1 :(得分:0)
EntryPointNotFoundExceptionmeans意味着函数“Test”要么(A)未标记为可导出(不可见),要么(B)签名与C#定义不匹配。
很可能你的问题是前者(A)。
我建议对您的库运行DUMPBIN.EXE,以验证您的“test”函数是否已导出,并且其各自的签名与您的C#定义相匹配。可能是JS端的代码注入。