我正在爲我的Turn Based Strategy遊戲創建AI,想法是有象瓷棋子那樣的瓷磚和那些瓷磚可以包含單位。查看結果是否爲
在我的班級中,我保留了一個敵方單位列表,並希望根據它們的「威脅級別」對它們進行排序。
/// <summary>
/// Enemy unit
/// </summary>
public Unit Unit { get; private set; }
/// <summary>
/// Distance towards other side of the board/victory
/// </summary>
public float Distance { get; private set; }
/// <summary>
/// Allied Unit covering the lane
/// </summary>
public Unit CoveringUnit { get; set; }
但是我奮力一點點我的if語句:
public int CompareTo(AiEnemyUnit pOther)
{
if (CoveringUnit == null && pOther.CoveringUnit == null)
return Distance.CompareTo(pOther.Distance);
if (CoveringUnit != null && pOther.CoveringUnit == null)
return 1;
if (CoveringUnit == null && pOther.CoveringUnit != null)
return -1;
// coverunits are both not null
Unit lvWinningUnit = GameManager.Instance.WhoWouldWin(this.Unit, this.CoveringUnit);
Unit lvWinningOtherUnit = GameManager.Instance.WhoWouldWin(pOther.Unit, pOther.CoveringUnit);
if ((lvWinningUnit == null && lvWinningOtherUnit == null) ||
lvWinningUnit == this.Unit && lvWinningOtherUnit == pOther.Unit)
return Distance.CompareTo(pOther.Distance);
if (lvWinningUnit == this.CoveringUnit && lvWinningOtherUnit != pOther.CoveringUnit)
return -1;
if (lvWinningUnit != this.CoveringUnit && lvWinningOtherUnit == pOther.CoveringUnit)
return 1;
Debug.Log("CompareTo AiEnemyUnit couldn't compare??");
return Distance.CompareTo(pOther.Distance);
}
的CoveringUnit是單位(應該是一個名單,但我們)在已經覆蓋的車道敵方單位在,所以如果此對象有CoverUnit和其他對象沒有那麼其他對象建議立即進行刪除d有優先權,因爲它需要產生一個單位來覆蓋那條車道。
它不斷給我調試消息,但我不能用Unity調試。
所以我的問題是:
是否有if語句,看看我缺少什麼幫助的工具或在線網站?
在此先感謝。
EDIT1:
什麼是我在我的CompareTo功能缺失:改寫由@paqogomez建議?
什麼調試信息?此外,索取工具或非現場資源是SO的主題。請重新提出您的問題,以更直接地解決您的困境。 – paqogomez
這可能是OP代碼的倒數第二行。 –
@paqogomez像格蘭特溫尼說,這確實是我的代碼的第二行。我不介意重述我的問題,但這基本上是我要求修正CompareTo方法,因爲我太密集而無法自己做,再加上該工具或非現場資源將來會很有用。 – SHEePYTaGGeRNeP