2016-03-26 156 views
2

我收到一個Unity webgl包,並將其放入Wordpress中的課程中。 Unity中生成的index.html是在iframe內部訪問的。訪問課程時,這必須能夠計算用戶的點擊次數。從瀏覽器訪問Unity Webgl輸出,反之亦然

的統一開發者只說,變是點擊並設有信息:

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

我讀統一的文檔,我應該創建一個js腳本來檢索統一消息。如何從Unity中檢索消息?腳本應該放在哪裏?

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

回答

4

編輯

團結現在支持Application.ExternalCall對WebGL的,所以你不再需要一個插件。對於那些使用舊版本Unity的人,我會留下舊的答案。仍然建議您使用下面的舊答案,因爲在打包的Chrome應用中使用Application.ExternalCall時,會出現security restrictions。插件不會發生這種情況。

OLD答案

Application.ExternalCallWeb播放只。 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); 

現在在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函數」開始閱讀。

+0

Application.ExternalCall與WebGL一起構建nowadaus - 也記錄在同一頁面上。 – antont

+0

@antont什麼是nowadaus? – Programmer

+0

恩,錯字,試圖說'時下',如目前,在2016年年底:) – antont

1

從技術上講,你也可以使用jQuery。唯一的問題是,你必須確保它在onReady函數中。只是一個側面說明。

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

進一步解釋,上面的代碼是非常簡單的。你有`ExternalCall'的參數是1:方法名稱2:參數參數。

您也可以傳遞不同數量的參數,只要確保您有正確的過載。

這是一個基本的例子。在你的團結讓我們說,你有這個功能叫。

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和類名。祝你好運。

+0

這不適用於webgl。它將用於weplayer,但標籤是關於webgl的。 – Programmer

+1

好點。錯過了那一個。 Application.ExternalCall讓我迷失了方向。 – Aizen

+0

這很好。我不得不在文檔中挖掘以實現一些變化。 – Programmer