首页 > 解决方案 > 如何在不同的类中使用 Monogame GraphicsDeviceManager?

问题描述

我有一个类,它有一种在屏幕上绘制形状的方法。

public class Rectangle : Game1 {

    Texture2D quadl;

    public Rectangle() {    

    }

    public void size() {

        quadl = new Texture2D(this.GraphicsDevice, 100, 100);

    }    
}

然后我在 Game1 类更新方法中调用它

Rectangle rt = new Rectangle(); rt.size();

然后它会产生一个无限循环。

有什么问题?我将如何解决它?我怀疑它与 GraphicsDeviceManager 有关,但是我没有找到任何帮助。

标签: c#monogame

解决方案


您的 Rectangle 不应继承自 Game1。如果您需要访问您的 GraphicsDevice,请将其作为参数传递给您的构造函数。因为现在,您正在为每个矩形创建一个新的 Game1。

public class Rectangle {

    Texture2D quadl;
    private readonly GraphicsDevice _graphicsDevice;

    public Rectangle(GraphicsDevice graphicsDevice) {    
        this._graphicsDevice = graphicsDevice;
    }

    public void size() {
        quadl = new Texture2D(this._graphicsDevice, 100, 100);
    }    
}

因为我们现在正在做的是,您正在使用每个 Rectangle 创建一个新的游戏实例,每个 Rectangle 都有自己的 GraphicsDevice 实例。


推荐阅读