這是在 Unity 中。當(dāng)我嘗試刪除已添加到此特定詞典中的元素時,刪除失敗并且我不理解該行為。這是聲明:private Dictionary<int, EnemyControler> remainingMobs = new Dictionary<int, EnemyControler>();在某些時候,我這樣做:remainingMobs.Add(newEnemy.MobID, newEnemy);MobID 是一個 int 我每次創(chuàng)建一個新的敵人時都會增加當(dāng)敵人死亡時,在他的 Destroy() 方法中,他調(diào)用:public void EnemyDied(int someID) { if(remainingMobs.Remove(someID)) { print("removed "+someID); } else { print("Failed to remove " + someID); DisplayRemainingMobs(); }}這是 DisplayRemainingMobs 方法:public void DisplayRemainingMobs() { string availableKeys=""; foreach (KeyValuePair<int, EnemyControler> pair in remainingMobs){ availableKeys+= pair.Key + ", "; } print(remainingMobs.Keys.Count + " are available : " + availableKeys);}這就是事情出錯的地方。當(dāng)我之前調(diào)用 DisplayRemainingMobs() 時,輸出是:2 可用 : 1, 2,這完全符合預(yù)期。但是,當(dāng)我殺死我產(chǎn)生的兩個中的一個,并在字典上調(diào)用 .remove() 時,打印的輸出變?yōu)椋簞h除失敗 20 可用:我不明白為什么 .remove() 失敗,也不明白為什么失敗后沒有更多可用的密鑰。我嘗試了很多東西,包括將 int 交換為 string,認(rèn)為它可能來自那里。我無法調(diào)試它,我打印的任何內(nèi)容只告訴我它應(yīng)該可以工作。在我的測試中,數(shù)字匹配。我什至制作了一個完整的功能,我在另一本專門為此制作的字典上使用所有這些功能,可以肯定的是,一切都按預(yù)期進行。我記得它可能來自于從方法調(diào)用 remove 的事實,但是我該如何解決呢?(顯然因為聲譽低而無法標(biāo)記字典)
1 回答

白衣染霜花
TA貢獻1796條經(jīng)驗 獲得超10個贊
問題是你從來沒有將敵人的wave
領(lǐng)域設(shè)置為 wavecontroller 對象。所以它試圖從一個空的波控制器而不是實際的波控制器中移除敵人。實例化敵人時,將其波場設(shè)置為this
。
- 1 回答
- 0 關(guān)注
- 255 瀏覽
添加回答
舉報
0/150
提交
取消