1

我试图在不同于 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。

4

2 回答 2

1

Game如果您的类是我认为已经存在的继承形式GraphicsDeviceManager,(可能您会收到这样的错误消息),因此您不能再次声明它。
您可以简单地将它作为新类的构造函数中的参数传递。或者您可以只传递您需要在该类中使用的成员。

关于“它告诉我它不能将此类转换为” ,如果您的类继承自尝试显式转换,则Microsoft.Xna.Framework.Game您不能将 ClassB 传递为。GameGame

于 2013-08-14T01:03:56.817 回答
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;

为了让您访问图形管理器。

希望这可以帮助

于 2013-08-14T14:43:50.590 回答