1

这篇文章的后续:需要关于游戏设计/结构的建议

我有Game.cs,它基本上保持了我的游戏状态。当一切都说完后,所有必要的变量都将包含在这里,以使保存、加载和开始新游戏更容易。我的问题是:这个类应该是静态的还是动态的?我尝试了动态,但我无法弄清楚在哪里正确实例化它。目前,Game.cs当 Windows 窗体中的按钮单击事件触发时实例化,但之后被视为局部变量,无法在其他地方访问。有没有办法全局实例化它?或者在这种情况下是static要走的路?

4

2 回答 2

4

Game 成为实例类:一切都应该是实例字段/属性/方法,而不是静态的。

在您的游戏中,您应该只有一个Game 类的实例。您可以将它传递给所有其他类,或者您可以通过将其设置为某个类上的公共静态公共字段来使其成为全局。

于 2013-05-14T22:04:40.780 回答
3

根据经验,静态类/方法应该是无状态的。如果你想从任何地方访问你的数据,你应该选择单例模式。

public class Game
{
    private static Game instance;
    public static Game Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new Game();
            }
            return instance;
        }
    }

    private Game()
    {
    }

    private int someData;

    public string SomeMethod()
    {
    }

    // ...
}

然后,在您的代码中访问它,如下所示:

string myString = Game.Instance.SomeMethod();
于 2013-05-14T22:04:27.847 回答