在XNA 4.0中,我的游戏类的GraphicsDevice属性和“graphics”变量的GraphicsDevice属性有什么区别?顺便说一下,“graphics”的类型是GraphicsDeviceManager。
如果重要的话,我正在使用Visual Studio 2010.
答案 0 :(得分:2)
无。亲自尝试一下:
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
)来管理创建图形设备。
答案 1 :(得分:0)
GraphicsDeviceManager管理GraphicsDevice,你不应该直接使用GraphicsDevice。如果需要,可以更改它,而不是只使用GraphicsDeviceManager.GraphicsDevice属性。