Unity WebGL与网页进行通信

时间:2016-03-14 10:49:01

标签: unity3d unity-webgl

我是团结的小伙子。所以,我正在尽我所能解释我被卡住的问题,我不知道如何处理。我有一个运行Ruby on Rails的网站。

我正在建立一个统一的小游戏,就像一个库存管理系统。但是,库存特定于用户,用户可以对其进行更改。用户将游戏视为其仪表板的一部分。 我想做什么:

  1. 当用户登陆他的仪表板时,统一游戏应加载已签名的用户库存。
  2. 为此,我相信统一webgl需要与我的应用程序进行交互并获得用户。
  3. 此外,

    1. 如何在不构建应用程序的情况下测试所有这些内容?

2 个答案:

答案 0 :(得分:0)

您可以在编辑器中测试用户登录/注销和信息中心,而无需构建 WebGl 。它会起作用,但 / strong>确保将来正常工作没有这样做,最终游戏可能不会有效,因为您使用了 WebGL 不支持的API。这就是为什么你必须测试游戏但没有全部的时间,只需一次

要与您的服务器进行通信,您应该使用新的Unity API UnityWebRequest 而不是 WWW WWW类将在本月或未来几个月内删除。 UnityWebRequest 完全支持 WebGL 构建。 WebGL 构建不支持 .Net 类。因此,您无法使用 HttpWebRequest 套接字 ......

答案 1 :(得分:0)

如果您想直接与浏览器通信,那么

  

WebGL index.html - Application.ExternalCall(" MyFunction",MyValue)

     

index.html WebGL - SendMessage(" MyGameObject"," MyFunction",MyValue)

因此,在您的情况下,当用户登陆他的仪表板时,统一应该从浏览器获得用户登录ID,这需要从index.html调用函数并将其返回到与您从中获取的数据的统一会话。

<强> WebGL的

public void ReloadInventoryBaseOnUser()
{
    Application.ExternalCall("GetUserID");
}

<强>的index.html

function GetUserID(){
    //$.ajax here to get session id
    SendMessage("Manager","SetUserID", userID);
    focus();
}

<强> WebGL的

public void SetUserID(string ID){
    userID = ID;
    ReloadInventory(userID);
}

会话是服务器端的事情,您可以编写一个Http处理程序(如果有的话,将共享会话ID)并使用$.ajax从那里返回值。所以假设你已将id存储到js变量userID