android - Unity3d WWW 类在 android 上非常慢

标签 android json unity3d

我想使用 WWW 类下载一个简单的 json。 我的问题是,在 Android 设备中需要 3 到 4 秒才能完成任务,但在编辑器中它可以在几毫秒内完成...

我做错了什么?

这是我的代码:

string url = "SomeURL/app.Json";
WWW www = new WWW (url);
www.threadPriority = ThreadPriority.High;
DebugText.text = "get json started";
yield return www;
DebugText.text = "Json Downloaded";

PS1:我为两个设备使用相同的网络。

PS2 : Json 文件小于 1 KB。

最佳答案

没有加速 WWW 的设置。如果它很慢,则意味着它要么在移动设备上实现不佳,要么您的设备又旧又慢。请注意,您的计算机在大多数情况下都比移动设备快,因此您可能认为它很慢。


备选方案:

1。现在,让我们假设 WWW 是问题所在。有一个新的 Unity API 应该取代 WWW。那是 UnityWebRequest API。

它真的很容易使用:

IEnumerator makeReuest()
{
    UnityWebRequest www = UnityWebRequest.Get("YourURL");
    yield return www.Send();
    string text = www.downloadHandler.text;
}

2.使用C# WebRequest 发起请求。将代理变量设置为 null,因为这可以加快请求速度。您必须在另一个 Thread 中使用它或使用其异步函数发出请求,否则,您的游戏将卡住,直到请求完成。

here 中获取 UnityThread因为此示例将使用 Unity ThreadPool,如果您想使用 Unity API,例如 Text,则需要 UnityThread来自另一个 Thread 的组件。

void Awake()
{
    //UnityThread.initUnityThread();
    downloadData();
}

void downloadData()
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(makeRequest));
}

private void makeRequest(object a)
{
    string url = "";
    string result = "";

    var request = (HttpWebRequest)WebRequest.Create(url);
    //Speed up
    request.Proxy = null;

    using (var response = (HttpWebResponse)request.GetResponse())
    {
        var encoding = Encoding.GetEncoding(response.CharacterSet);

        using (var responseStream = response.GetResponseStream())
        using (var reader = new StreamReader(responseStream, encoding))
            result = reader.ReadToEnd();
    }

    UnityThread.executeInUpdate(() =>
    {
        //Use in Unity Thread
        yourTextComponent.text = result;
    });
}

希望其中之一可以加快您的请求。如果那没有发生,那么这是您设备的限制。

关于android - Unity3d WWW 类在 android 上非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43673410/

相关文章:

ios - 奇怪的 iOS8 + Unity3D 打嗝

java - Android AsyncTask 中的 ConcurrentModificationException

android - 错误 : Failed to resolve: androidx. 生命周期 :lifecycle:2. 2.0-beta01

arrays - 将 bash 数组转换为 json 数组并使用 jq 插入到文件中

c# - Unity Project Will Not Load after crash,但其他项目仍然有效

c# - 如何让Unity中的c#与Python通信

android - Gstreamer 视频转 opengl 纹理

android - 从字符串动态创建 xml

json - 使用 xmlhttp 的经典 ASP 页面可以发出 JSON 请求吗?

javascript - 合并 json 并构建具有重复项的 csv