如何在不同class中使用Monogame GraphicsDeviceManager?

How to use Monogame GraphicsDeviceManager in different class?

我有一个 class 可以在屏幕上绘制形状的方法。

public class Rectangle : Game1 {

    Texture2D quadl;

    public Rectangle() {    

    }

    public void size() {

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

    }    
}

然后我在Game1中调用这个class更新方法

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

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

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

您的 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 实例。