2

我收到了一包 Unity webgl 并将其放入 Wordpress 的课程中​​。在 Unity 中生成的 index.html 可以在 iframe 中访问。这必须能够在访问课程时计算用户点击。

Unity开发者只说变量是Click,还有信息:

Application.ExternalCall("Send_Clicks", clickCount.ToString());

我阅读了 Unity 文档,我应该创建一个 js 脚本来从 Unity 检索消息。如何从 Unity 中检索消息?脚本应该放在哪里?

非常感谢任何答案。谢谢你。

4

2 回答 2

5

编辑

Unity 现在支持Application.ExternalCallWebGL,因此您不再需要插件。对于那些使用旧版本 Unity 的人,我将把旧答案留在这里。仍然建议使用下面的旧答案,因为在打包的 Chrome 应用程序中使用时存在安全限制。Application.ExternalCall插件不会发生这种情况。

旧答案

Application.ExternalCall仅适用于WebPlayerApplication.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);

现在在 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
    }
}

您必须包括 using System.Runtime.InteropServices;才能执行此操作。有关这方面的更多信息,请访问http://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html并从“从插件调用 JavaScript 函数”开始阅读。

于 2016-03-26T07:11:38.257 回答
1

从技术上讲,您也可以使用 jQuery。唯一的问题是,您必须确保它在 onReady 函数中。只是一个旁注。

Application.ExternalCall("Send_Clicks", clickCount.ToString());

为了进一步解释,上面的代码非常简单。`ExternalCall 的参数是 1:方法名称 2:参数参数。

你也可以传入不同数量的参数,只要确保你有正确的重载。

这是一个基本的例子。在你的 Unity 中让我们说你调用了这个函数。

Application.ExternalCall("MyInfo", "John", 23);

在您的 wordpress 页面中。确保你有一个<script>标签 一个普通的 JS 就可以了。

<script>
function MyInfo( arg1, arg2 )
    {
        alert("My name is :"+arg1 + " Age is : "+ arg2 );
    }
</script>

<body>就这么简单,通常在 MVC 中,JS 放在页面标签底部的某个位置。为了确保,它知道所有的 id 和类名。祝你好运。

于 2016-03-26T06:11:25.390 回答