我收到一个Unity webgl包并将其放入Wordpress的课程中。在Unity中生成的index.html是在iframe中访问的。这必须能够在访问课程时计算用户点击次数。
Unity开发人员只说变量是Click并且还有信息:
Application.ExternalCall("Send_Clicks", clickCount.ToString());
我阅读Unity文档,我应该创建一个js脚本来从Unity检索消息。如何从Unity检索消息?应该在哪里放置脚本?
非常感谢任何答案。谢谢。
答案 0 :(得分:4)
修改强>:
Unity现在支持Web Application.ExternalCall
,因此您不再需要插件。对于那些使用旧版Unity的人,我会在这里留下旧答案。我们仍然建议您使用下面的旧答案,因为在打包的Chrome应用中使用Application.ExternalCall
时会有security restrictions。插件不会发生这种情况。
OLD ANSWER :
Application.ExternalCall
仅适用于 WebPlayer 。 Application.ExternalCall
将不为 WebGL 工作。
这可以使用插件完成。
使您的JavaScript代码看起来像下面的内容。然后将其命名为PluginName.jslib
。扩展名必须为 .jslib 。将其保存到资产/插件/ 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函数”开始阅读。
答案 1 :(得分: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>
这很简单,通常在MVC中,JS放在页面<body>
标记的底部。为了确保它,它知道所有的id和类名。祝你好运。