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