Ich bin in Unity mit C# Codierung und Entwicklung für WebGL. Ich muss Browser JavaScript verwenden, also habe ich eine .jslib geschrieben, von der ich Methoden in C# mit Marshalling aufrufen.Kann eine JavaScript-Callback-Methode mithilfe von Marshalling auf eine C# -Methode festgelegt werden?
Ist es möglich, dass ich einen JavaScript-Rückruf zu einer C# Aktion, Func, oder Event-Handler wie so einzustellen:
// 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();
};
},
Ich habe jede dieser versucht, aber offenbar nicht zu tun es richtig. Ich weiß, dass C++ C# -Funktionen aufrufen kann, aber JavaScript muss irgendwie anders kommunizieren.
Versuche:
[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);
Egal, was ich versuche, erhalte ich eine Typeerror besagt, dass das Objekt, das ich an der JavaScript vorbei über keine Funktion ist. Ich habe versucht:
- Mit Aktion und Ereignis-Delegierten
- Mit ref, IntPtr, und weder
Wer weiß, ob dies überhaupt möglich ist? Wie ich bereits sagte, habe ich zuvor erfolgreich eine C# -Methode in einer C++ - DLL aufgerufen, also dachte ich mir, dass es von einer .jslib aus möglich wäre.
[Ist diese Antwort hilfreich?] (Http://stackoverflow.com/questions/35183253/unity3d-upload-a-image-from-pc-memory-to-webgl-app) – gman