相关疑难解决方法(0)

使用Unity在C#中发送http请求

如何使用Unity在C#中发送HTTP GET和POST请求?

我想要的是:

  • 在post请求中发送json数据(我使用Unity序列化器,因此不需要新的,我只想在post数据中传递字符串并且能够将ContentType设置为application/json);
  • 获得响应代码和正文没有任何问题;
  • 在不阻止ui渲染的情况下完成异步操作.

我尝试过的:

  • 使用HttpWebRequest/HttpWebResponse实现,但它太难和低级别(如果我找不到更好的东西,我将不得不使用它);
  • 使用统一WWW,但它不符合我的要求;
  • 使用NuGet的一些外部包 - Unity不接受它们:(

大多数问题都是使用线程,我在C#中没有足够的经验.我使用的文本编辑器是Intellij Rider.

c# http unity-game-engine

24
推荐指数
1
解决办法
2万
查看次数

下载文件之前从 http 请求获取文件/AssetBundle 大小

问题:

我想在完成下载文件之前获取 assetBundle 的大小。我可以向用户显示剩余时间。在Unity2018.2中,我们可以获取让我乘以进度的文件大小下载文件大小吗?或者还有其他方法来计算剩余时间

我知道WWW.responseHeaders包含该信息,但似乎需要完成下载。

这是我目前的代码。

    using (WWW downloadPackageWWW = new WWW(pkg.url))
    {
        while (!downloadPackageWWW.isDone)
        {
            print("progress: " + downloadPackageWWW.progress * 100 + "%");    
            yield return null;
        }

        if (downloadPackageWWW.error != null)
            print("WWW download had an error:" + downloadPackageWWW.error);
        if (downloadPackageWWW.responseHeaders.Count > 0) 
            print(pkg.fileName + ": " + downloadPackageWWW.responseHeaders["Content-Length"]+" byte");

        byte[] bytes = downloadPackageWWW.bytes;
        File.WriteAllBytes(pkgPath, bytes);

    }
Run Code Online (Sandbox Code Playgroud)

--

更新:

为了获得剩余时间,我提出了一个理想的方法,通过Time.deltaTime来计算,并且我们不需要知道总文件大小和下载速度。

float lastProgress = 0;
while (!www.isDone)
{  
     float deltaProgress …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

5
推荐指数
1
解决办法
6684
查看次数

标签 统计

c# ×2

unity-game-engine ×2

http ×1