2

Unity3D でメインの Gameobject を作成し、コントロールに関連するすべてのコマンド センターとして機能するようにしたいと考えています。これにより、プレイヤーが正しく行こうとしているかどうかを知る必要があるゲーム内のコンポーネントが、通知または状態の変化を受け取り、動作するようになります。によると。私は Unity でプログラミングとスクリプトを作成するのは初めてなので、これが可能であることは知っていますが、エンジンで具体的に行う方法はわかりません。

私が遭遇したいくつかの概念は次のとおりです。

  • 状態変化テクニック
  • シングルトンの神のクラス
  • メッセージを上向きに送信し、下向きに受信する子を持つ親ゲームオブジェクト
  • インターフェイスとして機能し、何らかのコレクションに実装され、呼び出されたメッセージを取得するために反復処理される抽象クラスの継承

この件について何か洞察があれば、それは素晴らしいことです。私は基本的に、この問題に対する適切なアプローチは何か、適切なアプローチ (長所と短所) を決定する方法、またはすべてが間違っているかどうかを知りたいと考えています。:)

私が探しているのは、この目的のために機能した選択した方法の実装例です。それぞれの個別の方法に入る必要はありません。パターンを決定した理由を簡単に説明するとよいでしょう。

前もって感謝します!

4

1 に答える 1

2

C#イベントを使用できます。1) CommandCenter クラス (MonoBehaviour) を作成し、共有する必要があるいくつかのイベントを実装し、tham を呼び出すパブリック メソッドをいくつか作成します。2) プレーヤーのボタンの押下を処理するときはいつでも、イベントを呼び出す CommandCenter のメソッドを呼び出します (または、イベントを公開して直接呼び出すこともできます) Awake。以下をせよ:

var commandCenter =  FindObjectOfType(CommandCenter);
commandCenter.MyEvent += localMyEventHandler;

4) 破棄時のイベントの購読を解除することを忘れないでください:

OnDestroy ()
{
var commandCenter =  FindObjectOfType(CommandCenter);
commandCenter.MyEvent -= localMyEventHandler;
}

5) したがって、localMyEventHandlerメソッドでこのイベントを処理できます。

于 2012-12-11T04:49:53.390 に答える