我在unity專案里加了判斷回傳鍵的方法,目的是點兩次退出
int escapeTimes = 0;
void Update()
{
if(Input.GetKey(KeyCode.Escape))
{
escapeTimes++;
Debug.Log("escapeTimes ==================" + escapeTimes);
if(escapeTimes > 1)
{
Application.Quit();
}
}
}
但是在真機上,點了一次回傳鍵后··就直接退出了。。
log如下
02-04 12:08:37.360: I/Unity(32715): escapeTimes ==================1
02-04 12:08:37.360: I/Unity(32715): UnityEngine.Debug:Internal_Log(Int32, String, Object)
02-04 12:08:37.360: I/Unity(32715): UnityEngine.Debug:Log(Object)
02-04 12:08:37.360: I/Unity(32715): BgManager:Update() (at F:\betaPrj\Assets\Script\BgManager.cs:436)
02-04 12:08:37.360: I/Unity(32715):
02-04 12:08:37.360: I/Unity(32715): (Filename: F Line: 0)
02-04 12:08:37.410: I/Unity(32715): onPause
02-04 12:08:37.410: V/AudioTrack(32715): stop 0x5b319800
02-04 12:08:37.410: V/AudioTrack(32715): stop 0x5b319800
02-04 12:08:37.410: V/AudioTrack(32715): stop 0x5b319800
02-04 12:08:37.410: V/AudioTrack(32715): stop 0x5b319800
02-04 12:08:37.860: D/Unity(32715): ASensorManager_destroyEventQueue returned 0
02-04 12:08:37.880: I/Unity(32715): windowFocusChanged: false
02-04 12:08:37.970: D/Unity(32715): [EGL] Attaching window 0x0
02-04 12:08:37.980: I/gralloc.sc8830(32715): ION_IOC_FREE success dc28b740,phy addr = 9fce7000
02-04 12:08:38.360: I/Unity(32715): onDestroy
02-04 12:08:38.380: D/dalvikvm(32715): Unregistering JNI method Lcom/unity3d/player/UnityPlayer;.nativeVideoFrameCallback:VILII
求教各位這個是哪里的問題··
uj5u.com熱心網友回復:
escapeTimes++;這個難道不是相當于
escapeTimes=escapeTimes+1;
只要觸發兩次你的程式就退出了。update貌似一秒鐘會執行很多次的。
uj5u.com熱心網友回復:
02-04 12:08:37.410: I/Unity(32715): onPause看起來程式被后臺了
uj5u.com熱心網友回復:
update 是引擎 按幀 執行的功能,當你用手點擊螢屏時有滯留時間,在這個時間里Update函式會被多次執行;你可以使用KeyDown來檢測
uj5u.com熱心網友回復:
GetKeyDownuj5u.com熱心網友回復:
樓上的幾位都是錯誤的。真正的原因并不是代碼的問題也不是unity的問題。是安卓系統為了安全保證,中鍵按下就會直接回到桌面,和IOS的中間一樣,中鍵不受程式約束
低版本的安卓可能可以控制home鍵,高版本的已經為了安全修正了這個問題。
你可以嘗試寫OnApplicationPause 來捕獲用戶按下中鍵回傳到桌面的資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/70346.html
標籤:Unity3D
