我使用C#編寫Unity,併爲WebGL開發。我需要使用瀏覽器JavaScript,所以編寫了一個.jslib,我使用編組方法在C#中調用方法。是否可以使用編組將JavaScript回調方法設置爲C#方法?
是否有可能對我來說,一個JavaScript回調設置爲C#操作,FUNC鍵或事件處理程序,像這樣:
// 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);
無論我怎麼努力,我得到一個類型錯誤,說明我正在穿越到JavaScript中的對象不是一個函數。我已經試過:
- 使用動作和事件委託
- 使用參考,IntPtr的,也不
任何人都知道,如果這甚至有可能?就像我說過的,我之前成功地在C++ .dll中調用了C#方法,所以想通過.jslib可以這樣做。
[這個答案有幫助嗎?](http://stackoverflow.com/questions/35183253/unity3d-upload-a-image-from-pc-memory-to-webgl-app) – gman