我有一個簡單的動作街機遊戲與玩家和多個敵人。我寫過一個遊戲,當所有敵人都死了時,關卡結束。我跟蹤敵人有一箇中央GameplayController,它有一個名爲enemiescount的靜態int。我在附加到每個敵人對象的腳本的清醒方法中增加了這個值,當敵人死亡時,我給這個名爲CountEnemies的遊戲控制器調用一個方法,該方法減少變量,如果它等於零,則結束該關卡。Unity3d有時遊戲結束的條件不會觸發
下面是代碼我CountEnemies由敵人類methid稱爲:
GameplayController.instance.CountEnemies();
其中instance剛剛返回GameplayController的單一實例。
下面的代碼到我的CountEnemies方法:
Debug.Log("Inside Count Enemies");
Debug.Log("Count Enemies before: " + enemiesCount);
enemiesCount--;
Debug.Log("Count Enemies after: " + enemiesCount);
if (enemiesCount == 0)
{
Debug.Log("Enemy Count is equal to zero");
//Complete Level
}
Debug.Log("End Count Enemies");
現在的問題是,它使用的工作,大部分的時間。但是,當我嘗試在移動設備上運行時,它會隨機出現,但無法結束關卡。我多次嘗試診斷問題,但每次我在PC上運行它時,它似乎都能夠完美無缺地運行,即使在某些罕見情況下它確實觸發了問題,但我可以發現的是,即使CountEnemies在每個回合都被調用,通過一些奇怪的原因敵人計數變量似乎沒有減少或可能增加。
我已經跟蹤通過Visual Studio代碼映射和引用的代碼,只有代替喚醒方法我增加了變量。請幫我解決這個問題或至少建議我如何調試它,就像這個變量的值更新附加的調試器讓我知道什麼。
何時調用該方法?當某個敵人在某種類型的OnDeath()方法中被殺時? – Chad