当前位置: 首页 > 面试题库 >

Android的Unity3d WWW类非常慢

孙玺
2023-03-14
问题内容

我想使用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。那就是UnityWebRequestAPI。

真的很容易使用:

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

2。使用
C#WebRequest发出请求。将proxy变量设置null为,以加快请求速度。您必须在另一个应用程序中使用它,Thread或者使用其异步功能发出请求,否则,您将冻结游戏直到请求完成。

UnityThread从这里开始抓取,因为本示例将使用Unity
ThreadPoolUnityThread如果您想使用Unity
API(例如Text来自另一个组件的组件),则需要使用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图片工具类,包括了非常实用的Android图片工具类的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android图片工具类的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我已经更新了Android Studio的最新版本(今天是2017年4月22日)并安装了Haxm,但Android模拟器完全没有用。它非常慢。 我不知道为什么,几天前它运行得又快又平稳。然后我重新启动了我的电脑,它变得非常慢。这一定是有原因的。 请不要回答安装Genymotion。Genymotion不允许我在免费版本中模拟手机。 正如我所说,安装了intel haxm。 “流程系统未响应”消息一

  • 而且大多数时候,我的cpu使用率大约是10%!(其实是闲置的!)因为以前gradle工作的时候几乎所有的时间都是100%

  • 我是Android Studio的新手。。每当我运行我的项目时,gradle构建大约需要14分钟。。我已经检查了这里提到的提高构建速度的解决方案 我的格拉德尔。属性文件: 但问题仍然是一样的,每一行的颜色都很暗,就像它们是注释行代码一样。当鼠标悬停在顶部时,会出现一条消息,上面写着“未使用的属性。此检查报告所有未从属性文件外部引用的属性” 我怎样才能解决这个问题?谢谢

  • 问题内容: 我正在查询有关的信息。 我正在迭代一个数组,并查询列表中的每个值。 不幸的是 ,在调试器下, 单个查询大约需要3-4秒,而 在禁用调试器的情况下, 查询时间要 短一些。 任何想法为什么这么慢?我使用进行测试。 这是我的代码: 更新资料 当我离开时,评估很快就完成了,但是我没有得到。它返回一个空字符串… 问题答案: 感谢@nvrmnd我尝试了一下,发现了一种更好的解析器: VTD-XML

  • 我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的python代码,它总结了一个范围内的自我权力。我需要这个非常非常大的数字的最后十位,我已经尝试了get上下文(). prec,但是我仍然达到了极限。 代码如下: 我怎么能看到这些美丽的数字?它在我的四核上打印速度相对较快。这只是为了给ProjectEuler带来乐趣,问题#48,请不要破坏者。我不想要解决方案,也不想让工作为我完成,