Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 主类实例的名称_Class_Xna_Instance - Fatal编程技术网

Class 主类实例的名称

Class 主类实例的名称,class,xna,instance,Class,Xna,Instance,我正在做一个简单的游戏,我被这个游戏绊住了:(XNA,Visual basic 2010) 我有一个名为Game1的主类,包含所有墙的列表(例如) 还有一个二等球。我在足球课上做碰撞检测。 我需要访问Game1类中的墙列表,但我不知道如何访问,目前还没有Game1类的实例,我也不知道它的名称 希望解释清楚。游戏1类由程序类实例化。在构造ball类时,可以将游戏传递给构造函数中的球 public class Ball { Game1 myGame; public Ball(Gam

我正在做一个简单的游戏,我被这个游戏绊住了:(XNA,Visual basic 2010)

我有一个名为Game1的主类,包含所有墙的列表(例如) 还有一个二等球。我在足球课上做碰撞检测。 我需要访问Game1类中的墙列表,但我不知道如何访问,目前还没有Game1类的实例,我也不知道它的名称


希望解释清楚。

游戏1类由
程序
类实例化。在构造ball类时,可以将游戏传递给构造函数中的球

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);
    }
}

如果你只想通过墙壁列表,也许考虑一类叫做“代码> WestMeals的某种类型,并将其传递给你的球类,而不是整个游戏。

编辑:

或者,如果您的类是
游戏组件
,您可以询问该组件的
游戏
。但这并不是很好,因为您还需要将球实例添加到游戏的组件中,并提供更新功能。你必须把你的游戏投给一个游戏1

例如:

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;
    }
}
类游戏1:游戏
{
球;
公共覆盖LoadContent()
{
球=新球();
此。组件。添加(球);
}
}
类球:游戏组件
{
公共覆盖更新()
{
//丑恶的例子
列表墙=((Game1)this.Game).walls;
}
}

如果没有实例,则无法访问实例成员。如果该类的实例永远不会超过一个,那么成员可能应该
共享
,在这种情况下,您可以使用
Game1.Walls
或任何名称访问此列表。Marnix,感谢您的回复-第一个解决方案有效,我真的很高兴您的帮助。来自捷克共和国的问候如果你喜欢我的答案,请按下接受按钮,这样这个问题就可以结束了。