1

我试图找出设计游戏结构的最佳方式。

目前我在任何地方都存储类实例,但我更喜欢直接使用静态访问。

例如,我有一个名为“ GameSaveSystem.cs ”的类

此类处理获取所有当前播放器的 StorageDevice 和所有存储相关信息。

所以我目前的策略如下

----------------MainClass.cs

public static void Main(string[] args) {
      new Main();
}

----------------Main.cs

public Main() {
    GameSaveSystem save_system = new GameSaveSystem();
    singlePlayer = new SinglePlayer(save_system);
    multiPlayer = new MultiPlayer(save_system);
}

----------------SinglePlayer.cs

SinglePlayer(GameSaveSystem save_system) {
  this.save_system = save_system;
}

----------------MultiPlayer.cs

MultiPlayer(GameSaveSystem save_system) {
  this.save_system = save_system;
}

我这样做的原因是因为在 Java 中我可以创建一个新的 .Java 文件并让它调用“ MainClass.main(args);

因此,在那个额外的类中,我可以访问存储在整个类文件中的任何静态类成员或公共静态实例。

所以我想知道的是使用实例会更安全吗?或者对于这种情况,我应该只使用静态类吗?我希望游戏对此类问题具有某种安全性。

下面是我见过的获取课程访问权限的 3 种方法

静态访问——这个人是否可以随时随地访问这个类(这是我首选的易于使用的策略)。

   ClassB.DoSomething();

随处存储的实例 - 每个类都将存储一个类的创建实例,因此他们可以随时访问它。类拥有它们需要存储的所有实例,仅此而已。

public class A(ClassB classB) {
      this.classB = classB;
}

classB.DoSomething();

存储在一个类中的实例 - 1 个类创建所有类的单个实例,通常只创建一个实例。然后您创建这个类的一个实例并将其存储到所有需要访问先前创建的实例的类中。只有存储主实例的类才能访问其他实例。

  public class A(Main main) {
       this.main = main;
  }
  main.getInstanceB().DoSomething();
4

1 回答 1

0

在我看来,你会从这方面的阅读中受益。

本质上,你选择哪一个更多的是个人选择。当然,每种方法都有性能考虑,但语义也很重要。作为软件工程师,您可以决定什么是最好的。

于 2012-06-03T00:28:51.107 回答