我有一个接收对象数组的函数。
我还有一个名为Rectangle
的类,但是当我迭代对象数组时,我需要将该索引中的Object作为Rectangle而不是作为对象,因为我将使用的函数需要参数类型矩形:
//For collision handling - Receives one rectangle
public bool IsColliding(Rectangle collisionRectangle)
{
return this.destinationRect.Intersects(collisionRectangle);
}
//Overloading - Receives an array with multiple Rectangles
public bool IsColliding(Object[] collisionRectangles)
{
for(int i = 0; i <= collisionRectangles.Length; i++)
{
//CODE WILL FAIL HERE - The method "Intersects" requires and object of type Rectangle
if(this.destinationRect.Intersects((Rectangle)collisionRectangles[i]))
{
return true;
}
}
return false;
}
编辑1:
在将数组传递给函数之前声明数组:
Object[] buildingCollitionRectangles =
{
new Rectangle[144, 16, 96, 32],
new Rectangle[144, 48, 96, 64]
};
尝试使用这样的方法:
if(!player.IsColliding(buildingCollitionRectangles))
{
updatePlayerInput();
}
编辑2:
尝试将矩形存储在Rectangle []数组中:
答案 0 :(得分:2)
好吧,我认为我们找到了它 - 你使用方括号而不是Rectangle
构造函数的括号。我认为你实际上正在分配两个巨大的Rectangle
对象的多维数组。 https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.rectangle.aspx肯定会显示你需要括号。
试试这个:
Rectangle[] buildingCollitionRectangles =
{
new Rectangle(144, 16, 96, 32),
new Rectangle(144, 48, 96, 64)
};
(请注意,我认为这也应解决无法使用Rectangle[]
数组的问题)
答案 1 :(得分:1)
为什么不使用Rectangle []作为参数的类型?