在另一个类中使用GraphicsDeviceManager

时间:2013-08-13 18:46:54

标签: c# xna multiple-inheritance

我试图在与Game1类不同的类中使用GraphicsDeviceManager,无论我是否初始化它都会给我一个错误。这是我正在做的一个样本:

    public class ClassB : ClassC
    {
       GraphicsDeviceManager graphics;

       public ClassB()
       {
           graphics = new GraphicsDeviceManager(this);//This is where I am getting an error
       }
    }

它告诉我它无法将此类转换为Microsoft.Xna.Framework.Game。

2 个答案:

答案 0 :(得分:1)

如果您的类是从Game继承的,我认为GraphicsDeviceManager已经存在,(可能您会收到类似的错误消息),因此您无法再次声明它。
您可以像在新类的构造函数中的参数一样传递它。或者您只能传递您需要在该类中使用的成员。

关于“它告诉我它无法将此类转换为Microsoft.Xna.Framework.Game”,您无法将ClassB作为Game传递,如果您的类继承自Game,则尝试强制转换明确地说。

答案 1 :(得分:1)

您应始终在Game1类中使用图形管理器,而不是将管理器作为参数传递给它。

所以Game1.cs

GraphicsManager graphics;

ClassB classyclass = new Class(graphics);

和新班级

public class ClassB : ClassC
    {
       public ClassB(GraphicsManager graphics)
       { 
          //Use the Graphics stuff 
       }
    }

此外,我认为您可以使用GameComponents(GameComponents),它可以为您设置大部分内容并将Game1作为参数,因此您可以执行以下操作:

((Game)Game1).graphics;

以便您访问图形管理器。

希望这有帮助