Итак, я сделал этот метод, чтобы определить, есть ли что-либо перед игроком при нажатии кнопки, проблема в том, что даже жесткий такой же метод без параметр out (он возвращает того, кто находится перед игроком), кажется, работает, этот вызывает недопустимое исключение литья, хотя я исследовал, что до сих пор не знаю, в чем проблема.C# Invalid Cast exception (я не знаю, где ошибка)
Проблемный код функции:
public bool isThereAnythingThere(Rectangle rec, out NPC other) {
bool tmp = false;
other = null;
foreach (NPC npc in gol)
{
if (npc.collider.Intersects(rec))
{
tmp = true;
other = npc;
}
}
return tmp;
}
функция игрока, который вызывает его:
void Action1()
{
NPC go = null;
switch (facingDirection) {
case Direction.Up: if (!game.isThereAnythingThere(UpRectangle), out go) ;
break;
case Direction.Down: if (!game.isThereAnythingThere(DownRectangle), out go) ;
break;
case Direction.Left: if (!game.isThereAnythingThere(LeftRectangle), out go) ;
break;
case Direction.Right: if (!game.isThereAnythingThere(RightRectangle), out go) ;
break;
} //Now go equals the object in the direction where facing, if theres no object, is null
if (go != null)
game.textBox.AddText(go.GetDialogue());
}
}
PS: gol
список всех GameObject
с в моей игре; GameObject
- это класс, из которых как Player
, так и NPC
унаследовать.
Какой тип 'gol'? Если это не перечислимое «NPC», то «foreach» вызовет этот тип исключения. –
Когда вы отлаживаете и продвигаете линию за строкой, какая строка выдает ошибку? – Seano666
StackTrace исключения должен предоставить вам необходимую информацию. Если нет, обновите свой код, чтобы быть полной минимальной программой, необходимой для воспроизведения проблемы. – bmm6o