来自我班级的GraphicsDeviceManager对象(帖子中更好的解释)

时间:2011-08-19 21:43:33

标签: c# xna

好吧,所以我有一个GameObject类(我自己创建),我想创建一个包含屏幕最大宽度的GraphicsWidth变量,这意味着我需要创建一个GraphicsDeviceManager实例。 (对?)。好吧,这就是我做的:

protected GraphicsDeviceManager GM;

public int GraphicsWidth
    {
        get
        {
            return GM.GraphicsDevice.Viewport.TitleSafeArea.Width;
        }
    }

它说我需要使用“new”(初始化对象)。但我不知道如何从我的GameObject类中做到这一点?

请拜托,有人可以帮我吗?真的很高兴。 感谢。

编辑:有人请吗?

1 个答案:

答案 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类中的方法。