javascript - 从浏览器访问 Unity Webgl 输出,反之亦然

标签 javascript c# wordpress unity3d unity-webgl

我收到一个 Unity webgl 包,并将其放入 Wordpress 类(class)中。从 Unity 生成的 index.html 是在 iframe 中访问的。这必须能够在访问类(class)时计算用户点击。

Unity开发者只说变量是Click,还有资料:

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

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

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

最佳答案

编辑:

Unity 现在支持 WebGL 的 Application.ExternalCall,因此您不再需要插件。对于那些使用旧版 Unity 的人,我将在此处保留旧答案。仍然建议使用下面的旧答案,因为有一个 security restrictions当在打包的 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 函数”开始阅读。

关于javascript - 从浏览器访问 Unity Webgl 输出,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232108/

相关文章:

javascript - 网格内的 Ext JS 组合框

javascript - $scope.name.push() 不工作

wordpress - 如何在 firebase 托管中安装 wordpress?

php - add_theme_support 不适用于 functions.php

javascript - 日期 fns 的 isSameOrBefore 实现

javascript - 关于我第一个使用本地 RPC、Web3 和 Remix 的契约(Contract)的一些问题

c# - ASP.NET Web API 中的参数绑定(bind)

c# - 将焦点重新放在按钮单击事件 C# winforms 上的先前集中控制上

c# - 如何通过 Google 使用 DotNetOpenAuth 获取用户名

jQuery css 宽度在 IE/Opera/FF 中不起作用,但在 Chrome 中起作用