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

本文关键字:文件 参数 JavaScript Unity 传递 | 更新日期: 2023-09-27 17:56:30

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

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

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

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

您需要将数据

从网页发送到 Unity3d 容器。你可以做这样的事情:

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

哪里:

u 是 Unity 创建的 Unity3d 容器对象(如果使用其模板)。

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

方法名称是可用于该游戏对象的方法的名称,这意味着它将是在附加游戏对象的组件之一(MonoBehavior)中定义的方法

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

在 C#/Unity 方面,你需要实现一个 MonoBheviour 它有一个

void MethodName(string param);

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

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

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

你需要一个端点,用你的c#编写(从网络上的文件结尾猜测.cs)来读取你的客户端javascript正在发布的内容。我不知道你使用的是哪个版本的.net,但看看WebAPI - 它很容易实现。

博士

  1. 使用 javascript/jquery 将数据从客户端发布到服务器。
  2. 读取服务器端发布的数据,通过 WebAPI 或只是读取查询字符串/表单值的普通.aspx页面

如果您只想从客户端发送数据,而不用担心任何响应,则可以使用

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

如果您希望改为发出 get 请求,可以将POST更改为 GET。如果您使用普通.aspx页面进行url,则可以通过Request.FormRequest.QueryString读取数据。如果您使用 WebAPI,它将被注入到您的方法参数中。