【问题标题】:How to send json data to RESTful API in Unity3D?如何将 json 数据发送到 Unity3D 中的 RESTful API?
【发布时间】:2015-06-15 18:30:11
【问题描述】:

朋友们下午好!

我是一名程序员,我正在学习 Unity 和游戏开发领域。我怀疑我无法很好地找到答案。 使用 RESTful Web 服务处理移动多人游戏的最佳架构或解决方案是什么?这是可能的?这是进行在线多人游戏的最佳方式吗?

我一直在研究一点 WWWForm 类,并尝试使用 JSONObject 模拟通过 JSON 发送数据,但没有取得多大成功。我实际上无法发送 javascript 对象。

一个例子:

public void enviar(JSONObject json, Objeto obj)
{
    string url = "http://myurl/unity.php";

    WWWForm form = new WWWForm();

    form.AddField("var1", "[{\"Nome\":\""+obj.name+"\"}]");

    WWW www = new WWW(url, form);

    StartCoroutine(WaitForRequest(www));
}

IEnumerator WaitForRequest(WWW www)
{
    yield return www;

        // check for errors
    if(www.error == null)
    {
        Debug.Log("WWW Ok!: " + www.text);
    } else {
        Debug.Log("WWW Error: "+ www.error);
    }    
} 

我的 PHP 文件有以下测试:

$t = $_POST['var1'];
$novot = json_decode($t);

foreach ($novot as $novo){
$fp = fopen("bloco1.txt", "a");

$escreve = fwrite($fp, $novo);

fclose($fp);
}

我只能返回一个 stdClass,我可以处理,但对我来说这是非常手动的东西。没有简单而正确的方式来使用 Web 服务?

【问题讨论】:

    标签: php json rest unity3d


    【解决方案1】:

    您是在问如何来回发送更丰富/结构化的数据?是的,JSON 将是一个显而易见的选择。

    REST API 很简单,客户端-服务器,无状态。等典型的网络范式。有一些框架可以帮助进行身份验证和包装面向对象的代码以将其公开为服务。其中许多属于“微框架”类别。 Slim 例如。 Zend Framework 也有一些相关的类。 Zend 也有一个名为 pigility 的独立产品 - 不建议您购买它,但它可以为您提供一些想法。

    我会在 Git Hub 中搜索“rest server”或类似内容。

    此外,如果您没有编写好的 OOP 代码,您将继续发现“非常手动”的东西。 DRY(不要重复自己)原则是一个很好的开始时要遵守的原则。

    祝你好运。最近在用 Unity3d 教我弟弟一些编码技能时,我自己玩得很开心。

    【讨论】:

    • 我知道什么是网络服务。问题是如何在 Unity 中使用它,强调我在上一篇文章中提到的所有问题,@ficuscr,哈哈。谢谢!
    • 也许会问更具体的问题,而不是“如何简单而正确地使用网络服务”......不知道如何帮助你。我鼓励您查看其他游戏开发者的源代码。
    【解决方案2】:

    Unity 没有最好的内置 WebServices,但开发人员已经在 Asset Store. 上构建了很多插件,此外,我使用 BestHTTP 插件,非常喜欢它! (虽然确实要花钱)。

    【讨论】:

    • 感谢您的回复,迈克尔。我看了看,但我不确定该软件包是否仅在 API 位于 ASP .NET 中时才有帮助。无论如何,我认为最好的解决方案甚至不能通过网络服务连接,而是像 Photon 这样的东西。我还在研究它,甚至有点失落。
    • 啊,是的,抱歉,我一定错过了您将其用于多人游戏。光子是一个很好的系统。此外,Unity 终于在Unity 5.1 中发布了他们新的多人游戏组件/设置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2013-10-24
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多