2017-06-05 120 views
0

所以我有瀏覽器和統一webgl, 之間的溝通這個問題,基本上我想要做的就是在視圖webgl正在播放的JavaScript代碼團結的場景中生成對象。換句話說,視圖會在加載場景之後創建遊戲對象的javascript代碼,但不確定這是否可行。統一webgl和瀏覽器javascript通信

我已閱讀統一文檔,但我還沒有找到如何實現在那裏顯示的代碼或如果它是我正在尋找的示例。

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html這就是我一直在閱讀的,特別是代碼可見性的一部分,但由於我從來沒有與前端合作過,所以我有點無知。

回答

0

你可以做的是在你的Javascript代碼中發送消息給Unity,但你會讓Unity做關於實例化對象的骯髒工作。

這是我只是做了一個例子:

首先你創建一個派生的對象/預製一個C#腳本,像這樣:

using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 

public class MyObjectSpawner : MonoBehaviour { 
    public Transform Prefab; 

    public void Spawn(string data) { 
     var instance = Instantiate(Prefab); 

     // do what you like with your instantiated object and the data from the javascript here  
    } 
} 

現在你裏面的場景創建一個對象,並附加這個腳本來吧。請注意您給剛剛創建的遊戲對象的名稱,這在下一步中很重要。現在,假設我們將其命名爲「MyGameObject」。

最後一步是你的JavaScript裏面的遊戲頁面容器。在這個例子中,我創建了一個按鈕,當它被點擊時,調用spawnUnityObject()方法。就像這樣:

HTML:

<button type="button" onclick="spawnUnityObject()">Press me</button> 

的Javascript:

function spawnUnityObject() { 
    // game object in the scene, method name, method parameter 
    SendMessage('MyGameObject', 'Spawn', 'Super string'); 
} 

結果將是:當您單擊HTML裏面的 「按我」 的按鈕,遊戲將產生的對象,並且可以使用「超級字符串」作爲Spawn()方法中的數據。

我希望這可以幫助你。讓我知道你是否需要更多細節。

+0

這聽起來像我需要的,我會嘗試它,讓你知道,謝謝。 –

+0

所以我一直在使用這段代碼試圖修改它,但有一件事我不能擺脫是這個消息我得到的視圖sendMessage(「MyGameObject」,「產卵」)','sendMessage'是不明確的) 所以我一直在嘗試使用這個「gameInstance.SendMessage()」,我仍然得到相同的錯誤,我真的不知道爲什麼。 –

+0

您不需要獲取任何實例來調用'SendMessage'。注意案件很重要。所以'sendMessage'不同於'SendMessage'。 – Kleber