1. コントローラーとは何ですか?
名前が示すように、コントローラーはコントローラーです。これは、ゲーム内のプレーヤーのプロキシ オブジェクトであり、プレーヤーとゲーム内のキャラクターまたは AI の間の対話のブリッジです。そのタスクは、キャラクターまたは AI のすべての動作を制御することです。コントローラーは手のひらの上でキャラクターやAIと遊んでいるとも言えます。
コントローラーはアクターから派生しているため、もちろんアクターの基本属性 Tansform を持ち、コントローラーにゲーム レベルに存在する能力を与えます。コントローラーには、ルート クラス UObject に実装されるシリアル化機能があり、ネットワーク コピーがあります。オンラインゲームでは、サーバーにネットワークコピーすることができます。
ゲーム レベルでは、通常、コントローラーは表示されません。あれ、Actor なのにゲームレベルでは見えないのはなぜでしょうか?Controller.cpp ファイルのソース コードを調べたところ、以下に示すように、コンストラクターで SetHidden(true) がデフォルトで初期化されていることがわかりました。
もしそうなら、なぜデフォルトで非表示にする必要があるのかと疑問に思うかもしれません。
ん~o(* ̄▽ ̄*)o いい質問ですね…。
アクター自体には形状や色がなく、アクターの白いボールのアイコンはエディター モードでのみ表示されます。ゲームモードでは形や色は表示されません。その機能は仲介です。私たちが気にするのはその機能だけであり、見た目ではありません。(プログラムには古いシングルもあり、じっとしていられませんでした。まあ、私の要求は高くありません。見た目は気にしません、プレイできる限り。)それからトイレに行き、足と足のしびれを感じて戻ってきました)。
とりあえず、見ても意味がないので隠しておきましょう。
2. ライフサイクル
コントローラーはレベル内に存在できるということは、コントローラーはレベルのメンバーであり、そのライフサイクルはレベルで始まり、レベルで終わるということですか? 答えは「いいえ」です。コントローラーはレベル内に存在しますが、レベルに属していません。
UE の世界観の記事で、世界は複数のレベルで構成されていると述べました。これは、コントローラーがレベルが存在するかどうかを気にしないことを示しています。World に属し、そのアイデンティティは Level に相当します。
したがって、Controller の存在は必ずしも Level に関係するものではなく、Level を越えて存在し、Level 内および Level 間のロジックに随時介入する部外者です。
3. なぜこのように設計されているのでしょうか?また、UE コア フレームワークでどのような役割を果たしますか?
Unreal Engine を設計する際の Epic の当初のアイデアは、MVC (モデル-ビュー-コントローラー) アーキテクチャ パターンに基づいていました。コントローラーは、データ層モデルとプレゼンテーション ビューを分離して、設計パターンの単一機能原則に沿った分離された論理処理を実装します。これにより、開発者はエンジンのソース コードを読むときにより体系的になり、エンジン アーキテクトの当初の設計意図を理解しやすくなります。
コントローラーは、アンリアル エンジンのソース コードのコア フレームワークで最も重要なクラスの 1 つであり、ゲーム内でのプレーヤーのエージェントであり、プレーヤーの操作をゲーム キャラクターまたは AI に送信する役割を果たします (たとえば、プレーヤーはキーボードを操作します)また、キャラクターのアクションをゲーム キャラクターまたは AI に転送し、AI の情報とステータスをプレーヤーにフィードバックする役割も担います (たとえば、ゲーム キャラクターが負傷した場合、ゲーム コントローラーが振動します)。
4. コントローラークラスのプロパティ。