Hen*_*ing 2 javascript c# wordpress unity-game-engine unity-webgl
我收到了一个 Unity webgl 包,并将其放入 Wordpress 的课程中。Unity 生成的 index.html 可以在 iframe 中访问。这必须能够在访问课程时计算用户点击。
Unity开发者只说变量是Click,还有信息:
Application.ExternalCall("Send_Clicks", clickCount.ToString());
Run Code Online (Sandbox Code Playgroud)
我阅读了 Unity 文档,我应该创建一个 js 脚本来从 Unity 检索消息。如何从 Unity 检索消息?脚本应该放在哪里?
任何答案都非常感谢。谢谢你。
编辑:
Unity 现在支持Application.ExternalCallWebGL,因此您不再需要插件。对于那些使用旧版本 Unity 的人,我会在这里留下旧的答案。仍然建议使用下面的旧答案,因为在打包的 Chrome 应用程序中使用时存在安全限制Application.ExternalCall。插件不会发生这种情况。
旧答案:
Application.ExternalCall仅适用于WebPlayer。Application.ExternalCall将不为工作的WebGL。
这可以通过插件来完成。使您的 JavaScript 代码如下所示。然后命名PluginName.jslib。扩展名必须是.jslib。将其保存到Assets/Plugins/WebGL/PluginName.jslib
var MyPlugin = {
Hello: function()
{
window.alert("Hello, world!");
},
HelloString: function(str)
{
window.alert(Pointer_stringify(str));
},
};
mergeInto(LibraryManager.library, MyPlugin);
Run Code Online (Sandbox Code Playgroud)
现在在 C# 中,您应该可以执行以下操作:
using UnityEngine;
using System.Runtime.InteropServices;
public class NewBehaviourScript : MonoBehaviour {
[DllImport("__Internal")]
private static extern void Hello();
[DllImport("__Internal")]
private static extern void HelloString(string str);
void Start() {
Hello(); //Call Hello from JavaScript
HelloString("This is a string."); //Call HelloString from JavaScript with parameter
}
}
Run Code Online (Sandbox Code Playgroud)
您必须包含 using System.Runtime.InteropServices;才能执行此操作。有关更多信息,请访问http://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html并从“从插件调用 JavaScript 函数”开始阅读。