好吧,所以我有一个GameObject类(我自己创建),我想创建一个包含屏幕最大宽度的GraphicsWidth变量,这意味着我需要创建一个GraphicsDeviceManager实例。 (对?)。好吧,这就是我做的:
protected GraphicsDeviceManager GM;
public int GraphicsWidth
{
get
{
return GM.GraphicsDevice.Viewport.TitleSafeArea.Width;
}
}
它说我需要使用“new”(初始化对象)。但我不知道如何从我的GameObject类中做到这一点?
请拜托,有人可以帮我吗?真的很高兴。 感谢。
编辑:有人请吗?
答案 0 :(得分:0)
GraphicsDeviceManager在Game1类中实例化。最有可能的是,您也在Game1类中实例化了gameObject。实例化gameObject时,用它传递graphicDeviceManager的引用:
//somewhere in your game1 class:
GameObject gameObject = new GameObjec(Graphics);
//then, in and above the constructor of your GameObject:
GraphicsDeviveManager GM;
public GameObject(GraphicsDeviceManager gdm)
{
GM = gdm;//GM is now available to the rest of the gameObj class.
}
或者......执行与上面相同的操作,但是传递服务,以便您可以使用它包含的任何内容。 或者......以同样的方式传递游戏参考。我看到很多人这样做。 或者......使graphicsDeviceManager保持静态,因为只有一个。
我通常会传递服务容器ref,但大多数人都会通过游戏参考。有些人只将引用传递给实际需要它的GameObject类中的方法。