如何在不同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 实例。
我有一个 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 实例。