我使用C#在Unity中编码并为WebGL开发。我需要使用浏览器JavaScript,所以编写了一个.jslib,我使用编组来调用C#中的方法。
是否可以将JavaScript回调设置为C#Action,Func或Event Handler,如下所示:
// Javascript in .jslib called from C# using static extern
// action being the C# method that I want to call
// On callback I get -> TypeError: action is not a function
SetOnOpen: function (action) {
$jsobj.onopen = function () {
action();
};
},
我已经尝试了其中的每一个,但似乎没有正确地做到这一点。我知道C ++可以调用C#函数,但JavaScript必须以某种方式进行不同的通信。
尝试:
[DllImport("__Internal")]
private static extern void SetOnOpen(ref OnOpenHandler handler);
[DllImport("__Internal")]
private static extern void SetOnOpen(ref Action action);
[DllImport("__Internal")]
private static extern void SetOnOpen(IntPtr handler);
无论我尝试什么,我都会得到一个TypeError,说明我传递给JavaScript的对象不是函数。我试过了:
任何人都知道这是否可能?就像我说的那样,我之前在C ++ .dll中成功地调用了一个C#方法,因此可以从.jslib中做到这一点。
答案 0 :(得分:0)
根据我的经验,使两者进行通信的唯一方法是使用SendMessage。如果需要携带多个参数,可以附加数组。