我在 Unity 中收到錯誤訊息:
“InvalidCastException: Specified cast is not valid.
Tile.OnMouseDown () (at Assets/Tiles/Tile.cs:38)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32)”
更準確地說,它抱怨關于這一行(38):
> if (OccupiedUnit.Faction == Faction.Hero) UnitManager.Instance.SetSelectedHero((BaseHero)OccupiedUnit);
我最近開始學習 Unity,所以我不知道如何解決這個問題。
附上代碼如下:
if (OccupiedUnit != null)
{
if (OccupiedUnit.Faction == Faction.Hero) UnitManager.Instance.SetSelectedHero((BaseHero)OccupiedUnit);
else
{
if(UnitManager.Instance.SelectedHero != null)
{
var enemy = (BaseEnemy)OccupiedUnit;
Destroy(enemy.gameObject);
UnitManager.Instance.SetSelectedHero(null);
}
}
}
else
{
if (UnitManager.Instance.SelectedHero != null)
{
SetUnit(UnitManager.Instance.SelectedHero);
UnitManager.Instance.SetSelectedHero(null);
}
}
}
先感謝您。
uj5u.com熱心網友回復:
無意中我找到了解決這個問題的方法。出于某種原因,形式為 的顯式型別轉換SetSelectedHero((BaseHero)OccupiedUnit)不起作用,但是當我將其更改為它時,SetSelectedHero(OccupiedUnit as BaseHero)它開始正常作業。
不知道為什么它會這樣作業,但如果有人有想法,如果您能分享您的知識,我將不勝感激。
uj5u.com熱心網友回復:
GemuSenYou 當您使用 SetSelectedHero((BaseHero)OccupiedUnit) 并且失敗時,它會拋出 InvalidCastException,但使用 SetSelectedHero(OccupiedUnit as BaseHero),如果失敗,結果將為 null,您可能會在代碼中的某處檢查。這是我最好的問題:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376847.html
