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);」を呼び出すことができるためです。

そのため、その余分なクラス内で、クラス ファイル全体に格納されている任意の静的クラス メンバーまたは public static インスタンスにアクセスできます。

だから私が疑問に思っているのは、インスタンスを使用する方が安全であるか、このタイプの状況では静的クラスを使用する必要があるかということです。この種の問題に対して、ゲームに何らかのセキュリティを持たせたいと思っています。

以下は、クラスへのアクセスを取得するために私が見た3つの方法です

静的アクセス - 人はいつでもどこからでもこのクラスにアクセスできます (これは、使いやすさのために私が好む戦略です)。

   ClassB.DoSomething();

どこにでも保存されたインスタンス - 各すべてのクラスには、作成されたクラスのインスタンスが保存されるため、いつでもアクセスできます。クラスには、格納する必要があるすべてのインスタンスがあり、他には何もありません。

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

classB.DoSomething();

1 つのクラスに格納されたインスタンス - 1 つのクラスは、通常は 1 つのインスタンスのみが作成されるすべてのクラスの単一のインスタンスを作成します。次に、このクラスのインスタンスを作成し、以前に作成したインスタンスへのアクセスを必要とするすべてのクラスに格納します。メイン インスタンスを格納したクラスだけが他のインスタンスにアクセスできます。

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

1 に答える 1

0

このを 少し 読ん で いただけ たら 幸い です.

どちらを選ぶかは基本的に個人の自由です。もちろん、それぞれにパフォーマンスに関する考慮事項がありますが、セマンティクスも重要です。何が最適かを判断するのは、ソフトウェア エンジニアであるあなた次第です。

于 2012-06-03T00:28:51.107 に答える