在 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的任何成员中设置其成员。这样,您可以用自己的实现类替换- 如果您碰巧疯了;)IGraphicsDeviceServiceServicesGraphicsDeviceManagerIGraphicsDeviceService
GraphicsDeviceManager也是一个IGraphicsDeviceManager,它Game以类似的方式(通过Game.Services)使用来管理创建图形设备。
GraphicsDeviceManager 管理 GraphicsDevice,你不应该直接使用 GraphicsDevice。如果需要,可以更改它,而不是只使用 GraphicsDeviceManager.GraphicsDevice 属性。