c# - 如何在不同的类中使用 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 有关,但是我没有找到任何帮助。
解决方案
您的 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 实例。
推荐阅读
- javascript - 更改悬停时的图像会更改整行的图像
- node.js - 在最后一行之前添加值行并保留最后一行格式
- go - How to index entire GOPATH for existing project in Goland?
- javascript - amCharts 不显示 json 数据
- http - Indy 10 HTTPS 代理
- sql - PIVOT 多列不考虑聚合结果
- command-line - 由于权限更改导致的总线错误(核心转储)
- c# - 使用 { get; 将 .json 反序列化为 C# 放; } (牛顿软件)
- angular - 从 Angular 2 迁移到 Angular 4 后,模块“AppModule”导入错误意外值“t”。请添加@NgModule 注释
- mysql - 可以使用普通的 MySql jdbc 驱动程序写入 Mariadb。那为什么要使用单独的 MaraDB 驱动程序呢?