我正在做一个简单的游戏,我对此感到困惑:(XNA,Visual Basic 2010)
我有一个名为Game1的主类,包含所有墙的列表(例如) 还有第二类球。我在球类中进行碰撞检测。 我需要从Game1类访问墙的列表,但我不知道如何,还没有Game1类的实例,我不知道它的名称。
希望解释清楚。
答案 0 :(得分:1)
Game1
类由Program
类实例化。在构建球类时,您可以将游戏传递给构造函数中的球。
public class Ball
{
Game1 myGame;
public Ball(Game1 _theGame)
{
myGame = _theGame;
}
}
public class Game1 : Game
{
Ball ball;
public override LoadContent()
{
// construct the ball with THIS.
ball = new Ball(this);
}
}
如果您只想传递墙壁列表,可以考虑使用某种名为WallManager
的类,并将其传递给您的球类,而不是整个游戏。
编辑:
或者如果您的班级是GameComponent
,您可以询问该组件的Game
。但这不太好,因为你还需要遵守将你的球实例添加到游戏组件中并提供更新功能。而你必须将你的游戏投射到Game1。
示例:
class Game1 : Game
{
Ball ball;
public override LoadContent()
{
ball = new Ball();
this.Components.Add(ball);
}
}
class Ball: GameComponent
{
public override Update()
{
// ugly example
List<Wall> walls = ((Game1)this.Game).Walls;
}
}