2014-04-09 35 views
1

我试图在另一个类中使用在Game1.cs中声明的变量。如何在MonoGame的其他类中使用Game1类中声明的变量

为了简化,我创建了一个新项目,并且想操作int变量x。 我得到Object reference not set to an instance of an object.game.x = 0;

我是新的C#,谁能告诉我是什么问题,如何解决?

这是类:

class Class1 
{ 
    Game1 game; 

    public void init() 
    { 
     game = new Game1(); 
    } 

    public void Update() 
    { 
     game.x = 0; 
     game.x++; 
    } 
} 

这是我的代码在Game1.cs

public int x = 0; 
Class1 y = new Class1(); 
    //other stuff 
protected override void Initialize() 
     { 
      y.init(); 
      base.Initialize(); 
     } 
// Other stuff... 
     protected override void Update(GameTime gameTime) 
     { 
      y.Update(); 
      base.Update(gameTime); 
     } 
+0

为什么要以这种方式访问​​game1?你的目标是什么? – jgallant

+0

思考之后,我想我并不需要这样使用它。相反,我会将所需的变量作为参数发送给另一个类。谢谢。 – Val

回答

2

我建议你做一些编程教程。以这种方式操纵公共领域几乎没有任何理由。然后,还有一个命名问题。什么是x?整个窗口的水平位置?有些物体?还有其他的东西吗?尽可能显而易见,这对你来说会很好。

实际的问题可能是游戏在更新中为空,这似乎很奇怪。如果你真的想这样做,我会建议修改Class1.UpdateClass1.Update(Game1 game)。那么你可以做y.Update(this)

不过,这绝对是解决问题的错误方法。你可以做得更好。请注意这一点。

+0

我想没有必要用这种方式真正使用game1类。谢谢你的时间。 – Val

相关问题