// Check if the new position is on an arrow
foreach (Item Item in GetFloorItems())
{
if (Item.Definition.SpriteId == 5000)
{
if (Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)
{
Session Session = SessionManager.GetSessionByCharacterId(Actor.ReferenceId);
ItemEventDispatcher.InvokeItemEventHandler(Session, Item, this, ItemEventType.Interact, Actor.MoveToAndInteractData);
}
}
}
错误行:if (Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)
抱歉,我是C#的新手。如果之前有这个问题,我似乎无法看到什么是错的,虽然它是在另一条线上,我所要做的只是检查它是否为空,但是在这里看不到多少相同的东西?
答案 0 :(得分:0)
这可能有用。切换if
if (Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)
到此:
if (Actor != null && Actor.PositionToSet != null && Actor.PositionToSet.X == Item.RoomPosition.X && Actor.PositionToSet.Y == Item.RoomPosition.Y)
当您尝试查看null对象的属性时,您将收到此错误。原因是null对象没有属性(ish)。如果Actor为null,则无法查看Actor.PositionToSet。如果Actor不为null,则可以查看属性PositionToSet,但如果为null,则无法查看属性X和Y.我希望这是有道理的,但只需添加任何其他问题的评论。
答案 1 :(得分:0)
if (Actor != null )
{
if(Actor.PositionToSet != null )
{
if(Actor.PositionToSet.X == Item.RoomPosition.X &&
Actor.PositionToSet.Y == Item.RoomPosition.Y) {
// Do your stuff
}
}
}