在XNA 4.0中,我的游戏类的GraphicsDevice属性和"graphics"变量的GraphicsDevice属性有什么区别?顺便说一句,"图形"的类型是图形设备管理器。
如果这很重要,我正在使用Visual Studio 2010。
什么都没有。自己试试:
Console.WriteLine(ReferenceEquals(graphics.GraphicsDevice, this.GraphicsDevice));
把它放在像里面一样的地方 LoadContent
.您会发现它输出true
.它们都指同一个对象。
为了便于阅读,您通常应该使用 Game.GraphicsDevice
.
基本行为是GraphicsDeviceManager
是一个IGraphicsDeviceService
(它提供了一个GraphicsDevice
成员)。当您创建 GraphicsDeviceManager
时,它会将自身添加到其构造函数中的Game.Services
(请参阅如何将对Game
的引用传递到其构造函数中)。
Game
从其Services
列表中的任何IGraphicsDeviceService
设置其GraphicsDevice
成员。这样,你可以用你自己的实现IGraphicsDeviceService
的类替换GraphicsDeviceManager
- 如果你碰巧是疯狂的;)
GraphicsDeviceManager
也是一个IGraphicsDeviceManager
,Game
以类似的方式(通过Game.Services
)来管理图形设备的创建。
GraphicsDeviceManager 管理 GraphicsDevice,您不应直接使用 GraphicsDevice。如果需要,可以更改它,以便使用GraphicsDeviceManager.GraphicsDevice属性。