在我们正在制作的应用程序中,我们希望在应用程序挂起时尝试远程用户保存数据。在Unity的编辑器,在Android上,这很简单,只要Unity3D在iOS上的主线程上的WWW调用
WWW www = new WWW(_URL);
while(!www.isDone)
{
Thread.Sleep(100);
}
Debug.Log(www.text);
(全样本:https://github.com/SixMinute/iOSWWWGet)
但在iOS上,www.isDone
而我们阻止从未值为true,那么整个事情只是挂起。
这是一个错误,或通过设计?然后,如果是设计,那么这样做的正确方法是什么,因为如果我们把它放在StartCoroutine
之后,它在主线程中不正确,并且在暂停时,发生什么事情会在应用程序恢复时推送到它(这完全击败了我们正在努力的目的)。
编辑:在与IRC上的一些Unity开发人员交谈后,他们接受这实际上是代码中的错误,了解我需要这个的原因,并且接受需要有一种方法来同步激发WWW请求,或者在iOS的OnApplicationPause(true)
流程中调用时启用此功能的其他方式,因为否则(尽管能够轻松地在本地执行),但当时无法启动WWW请求,唯一的选择是将它们排队,直到简历,这是完全不切实际的。
是的,我添加了来自Unity iOS开发者的响应。虽然在这种情况下这是平台的一个限制,但在挂起流程期间,仍然有一种方法可以从“OnApplicationPause(true)”调用中触发WWW请求。在目前最简单的形式中,你的回答是正确的,我会将其标记为这样,但希望Unity修复该错误/允许在iOS上执行此操作的方法,然后将该方法作为答案添加。 – seaders