gpt4 book ai didi

android - Unity3d WWW 类在 android 上非常慢

转载 作者:太空狗 更新时间:2023-10-29 13:08:47 24 4
gpt4 key购买 nike

我想使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com