BUG點 : Timeout while trying to pause the Unity Engine
引發這個的可能性有很多,這裡只談到我遇到的這一種
當視窗沒有失焦,然後你可能使用了任何一個改變視窗的function((像是投影到電腦)),在這之後,如果單純觸發了activity的onPause方法,沒有讓onWindowChangeFocus一起被觸發的話,在onResume的時候,unity就會當掉了,這時候如果又要onPause Unity的話就會出現
Timeout while trying to pause the Unity Engine.
這裡是我解這bug幾天的心得,可能跟事實不一定完全相同,知識點可能也有誤,可以看看就好。
Unity內有許多系統的function ,其中有個 OnApplicationPause 跟 onApplicationfocus
官方連結:
OnApplicationFocus他是在UnityPlayerActivity內的 onWindowChangeFocus上觸發的,((如果我沒記錯的話)),然後OnApplicationPause也是UnityPlayerActivity內的 onPause 去觸發的
其中onWindowChangeFocus這個很重要,他是在渲染完成的時候調用的
當現在你的螢幕視窗被改變了,像是miracast到電腦,如果你沒觸發mUnityPlayer.windowChangeFocus讓unity去改變底層的東西,就直接pause他並resume的話就會出現問題,所以在pause之前(或之後?) 必須call [mUnityPlayer.windowChangeFocus ] ((這裡是嚴重的猜測,很不一定是真的))