主类的实例名称

时间:2011-09-15 16:59:44

标签: class xna instance

我正在做一个简单的游戏,我对此感到困惑:(XNA,Visual Basic 2010)

我有一个名为Game1的主类,包含所有墙的列表(例如) 还有第二类球。我在球类中进行碰撞检测。 我需要从Game1类访问墙的列表,但我不知道如何,还没有Game1类的实例,我不知道它的名称。

希望解释清楚。

1 个答案:

答案 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;
    }
}