助けて
開発FAQ

シングルトンをどのように使用しますか?

6min

シングルトンは、プログラム内に特定のクラスのインスタンスが1つだけ存在することを保証するデザインパターンです。

シングルトンパターンは、クラスの単一のグローバルインスタンスを提供し、ロジック、オーディオ、UI、世界内の集中リソースを管理するなど、必要な他のスクリプトから簡単にアクセスできるようにします。

ZEPETOScriptでは、次のようにシングルトンを実装できます:

TypeScript


👍 ヒント

  • シーンにシングルトンスクリプトが付いたGameObjectがすでにある場合、この形式を使用できます。
  • ない場合は、GameObjectを作成するためのコードを追加します。
    • 例: new GameObject("ObjectName").AddComponent<ClassName>();

UIを管理するためのシングルトンを実装してみましょう:

1) シーンにUI > テキストとボタンを追加します。

  • "IncreaseScore"ボタンが押されたときにスコアを増加させるロジックを設定します。
  • "DecreaseScore"ボタンが押されたときにスコアを減少させるロジックを設定します。
Document image




2) "ScoreManager"というスクリプトを作成し、シングルトンを適用します。

  • ScoreManagerスクリプトは、スコアを増減させ、他のスクリプトから呼び出されたときにテキストを更新する責任があります。
TypeScript




  • スクリプトの説明
    • private static _instance: これはクラス内のプライベート静的変数で、初期値はnullです。
    • public static get Instance: この静的プロパティは、外部コードがこのクラスのユニークなインスタンスにアクセスする方法を提供します。
    • チェック if (this.\_instance == null). もしnullであれば、GameObject.FindObjectOfType<>()を使用してクラス名のコンポーネントを見つけて返し、それを静的変数に割り当てます。



3) スクリプトを書いた後、インスペクターに戻り、テキストコンポーネントを接続します。

Document image




4) 次に、「ScoreLogicSample」というスクリプトを作成し、シングルトンを呼び出す方法を示します。ScoreManagerとScoreLogicSampleが同じディレクトリにあることを確認してください。

Document image

  • このようにコードを書きます:
TypeScript




  • シングルトンスクリプトを取得する際には、パスを正しく指定することが重要です。
  • 必要に応じて、自分のスクリプト内でScoreManagerが呼び出される部分を調整できます。



5) [▶︎(再生)]ボタンを押してテストします。

  • ScoreLogicSampleのボタンをクリックすると、ScoreManager内の関数が呼び出され、期待通りに動作するのを観察する必要があります。
Document image