传递javascript参数并在Unity C#文件中使用它们

时间:2014-04-04 09:48:31

标签: c# javascript unity3d

我想在运行时(webplayer)将一些javascript参数传递给unity并在我的network.cs脚本中使用它们。

<html>
     <script type="text/JavaScript">
        //<![CDATA[
          PlayerName = "Adam";
          playerID = "56";
        //]]>
    </script>
</html>

考虑我正在使用上述参数登录用户。

2 个答案:

答案 0 :(得分:1)

您需要将数据从网页发送到Unity3d容器。你可以这样做:

u.getUnity().SendMessage(GameObjectName,MethodName,stringParam);

其中:

如果您使用他们的模板,则是Unity创建的Unity3d容器对象。

GameObjectName是您放置在舞台上某处的游戏对象的名称

MethodName是可用于该GameObject的方法的名称,这意味着它将是您附加GameObject的其中一个组件(MonoBehaviour)中定义的方法

stringParam si你传递给MethodName的参数,该方法只能接受一个字符串参数,所以你需要序列化你的数据,你可以使用JSON.parse({&#34; playerName&#34;:PlayerName,& #34; playerId&#34;:playerID})

在C#/ Unity方面,您需要实现具有

的MonoBheviour
void MethodName(string param);

定义读取字符串并使用JSON解析器获取数据。

答案 1 :(得分:0)

您需要将该数据发布回您的服务器。如果您不想重新加载整个页面,可能需要使用AJAX。

一个常用的框架,促进ajax是jQuery

您需要一个端点,在您的c#中写入(从您在network.cs上的fileending猜测)来读取您的客户端javascript发布的内容。我不知道您所使用的.net版本,但查看WebAPI - 它很容易实现。

TL; DR

  1. 使用javascript / jquery将数据从客户端发布到服务器。
  2. 阅读服务器端的发布数据,不管是WebAPI,还是正常的.aspx页面读取查询字符串/表单值
  3. 如果您只想从客户端发送数据,而不担心任何响应,可以使用

    $.ajax({
      type: "POST",
      url: url,
      data: {PlayerName: PlayerName, PlayerId: playerID},
    });
    

    如果您想要获取get请求,可以将POST更改为GET。如果您使用Request.Form的普通.aspx页面,则可以通过Request.QueryStringurl读取数据。如果您使用WebAPI,它将被注入您的方法参数。