Unity ゲーム フレームワーク - フレームワークの学習 - コンポーネントからモジュールへのカプセル化

エンティティコンポーネントを例に挙げると、エンティティコンポーネント内でbase.Awake()を呼び出してコンポーネントの登録を完了すると、すぐにモジュールが取得されます。エンティティコンポーネントによって取得されるモジュールは、エンティティマネージャのインターフェースです。
ここに画像の説明を挿入
エンティティ マネージャーのインターフェイスには、エンティティ関連のイベントや、関連するエンティティ グループ、数値、追加の処理メソッドが多数あります。
ここに画像の説明を挿入
エンティティマネージャーのインターフェースがどこに実装されているかを見てみますと、ブレークポイントデバッグにより、この時点のモジュール名がEntityManagerに変わっていることがわかります。ここは非常に重要で、IEntityManager エンティティ マネージャー インターフェイスは、文字列インターセプトを通じて EntityManager エンティティ マネージャーに変換されます。
ここに画像の説明を挿入
Activator.CreateInstance(moduleType) は、クラス名を使用してエンティティ マネージャー クラス EntityManager を作成し、エンティティ マネージャーの構築メソッドを呼び出します。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここで、実際のモジュールの取得とは、Managerで終わる各種マネージャークラスを取得することになります。各マネージャクラスが実装する機能は実装インターフェースを継承することで実現されます。
フレームワークモジュールの継承関係を以下に示します。
ネイティブフレームワークマネージャー: フレームワークモジュール抽象クラス、マネージャーインターフェース
EntityManager: GameFrameworkModule、IEntityManager
GameFrameworkModule: ゲームモジュール抽象クラス
抽象クラスには 3 つのフィールドまたはメソッドがあります
Priority: モジュールポーリング優先度
Update( ): Pollingメソッド
Shutdown(): フレームワーク モジュールを閉じてクリーンアップします
。 以下では、マネージャーとモジュールを総称してマネージャーと呼びます
。 この時点で、コンポーネントがマネージャーのインターフェイスを通じてマネージャーを作成し、ほとんどのコンポーネントがマネージャーを作成することがわかります。コンポーネントのメソッドは、デバイスのメソッドによって実装された管理を呼び出します。
ここに画像の説明を挿入
コンポーネントはモジュールを作成し、そのモジュールの機能を呼び出すが、モジュールの機能の実現はマネージャに依存し、この時点でコンポーネントによるモジュールのパッケージ化が完了する。

おすすめ

転載: blog.csdn.net/qq_37619255/article/details/129091118