gpt4 book ai didi

ios - Unity3D WWW 在 iOS 的主线程上调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:43 25 4
gpt4 key购买 nike

在我们制作的应用程序中,我们希望在应用程序挂起时尝试​​远程用户保存数据。在 Unity 的编辑器和 Android 上,这很简单

WWW www = new WWW(_URL);
while(!www.isDone)
{
Thread.Sleep(100);
}
Debug.Log(www.text);

(完整样本:https://github.com/SixMinute/iOSWWWGet)

但是在 iOS 上,www.isDone 在我们阻塞时永远不会计算为真,所以整个事情就挂起。

这是一个错误,还是设计使然?然后如果它是设计的,那么正确的方法是什么,因为如果我们把它放在 StartCoroutine 后面,它就不会正确地在主线程上,并且在挂起时,发生的事情会被推送到应用程序恢复(这完全违背了我们正在尝试做的事情的目的)。

编辑:在 IRC 上与一些 Unity 开发人员交谈后,他们接受这实际上是代码中的错误,理解我需要这个的原因,并接受需要有一种方法来同步触发 WWW 请求,或在 iOS 上的 OnApplicationPause(true) 流程中调用时启用此功能的其他方式,因为否则(尽管能够轻松地在本地完成)当时无法触发 WWW 请求,唯一的选择是将它们排队直到恢复,这是完全不切实际的。

最佳答案

此时 Unity 不会为 www Action 启动新线程,至少在某些平台(iOS、网络播放器)上是这样。或者,如果是,它会在主线程上设置 WWW.isDone。所以这段代码:

while(!www.isDone)
Thread.Sleep(500);

没用。

关于ios - Unity3D WWW 在 iOS 的主线程上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30799715/

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