在我們正在製作的應用程序中,我們希望在應用程序掛起時嘗試遠程用戶保存數據。在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