[ゲーム開発ポスト5の概要](対面オブジェクトと対面プロセスの違い、ポリモーフィズム、CG、デザインモード、プロセススレッドコルーチン、メモリ領域ストレージ、コルーチンの原理)

多くの人が頭の中でこのことの一般的な考えを本当に知っていることがわかりました、しかしあなたがそれを言うように頼まれた場合、あなたは本当に文を抑えることができない
ので、私たちはまだ下がらなければなりません-地球。一つの問題は、私たちがそれをよく見ることができないということです。

顔オブジェクトと顔プロセスの違い

1.対面プロセスはプロセス中心のプログラミングアイデアであり、対面オブジェクトはオブジェクトを基本的なプログラム構造単位とするプログラミング言語です
。2 対面プロセスは問題を解決するための手順を分析し、それを段階的に実装して、一度に1つずつ
顔オブジェクトを呼び出します一意の静的型と、場合によっては複数の動的型を持ち、データと操作を共有します
。面プロセスは、面オブジェクトの特性(多態性、継承)をサポートしていません。
内部で表現される永続状態オブジェクトと論理面オブジェクトを混在させることはできません。ポインタ、このオブジェクトに対する操作は、このポインタを介して操作します。オブジェクトのプロパティとメソッド

ポリモーフィズムとは何ですか?

ポリモーフィズムとは:親タイプの参照が子タイプのオブジェクトを指す
人気のあるバージョン:同じ操作が異なるオブジェクトに作用し、異なる効果を生み出す

利点: 1。プログラムの再利用性を向上させます(親クラスを変更すると派生クラスを変更できます)
2。スケーラビリティと保守性を向上させます(派生クラスの関数は基本クラスから呼び出すことができます)

どうやってそうなった?
基本クラスの関数の前にvirtualキーワードを追加して、派生クラスの関数をオーバーライドします。関数は、実行時にオブジェクトの実際のタイプに従って呼び出されます。
オブジェクトが派生クラスの場合は、次の関数を使用します。派生クラス。基本クラスの場合は、派生クラスの関数を使用します。基本クラス関数を使用します。

GC

GCはガベージコレクターの
役割です
1。ソフトウェア開発の抽象化を改善します
2.プログラマーはメモリ管理について心配する必要はありません
3.モジュールをより明確にし、結合を減らします
4.不適切な処理によって引き起こされるバグを減らし
ます5.メモリ使用量はより効率的な

一般的なデザインパターンとアプリケーションシナリオ

シングルトンモード

シングルトンモードは、一般的に使用される設計モードです。
そのコア構造保証には、シングルトンクラスと呼ばれる特別なクラスが含まれます。シングルトンモードを使用すると、システム内にクラスのインスタンスが1つだけであり
、インスタンスが簡単に存在することが保証されます。外部からアクセス可能リソースを制御および節約するためのこのインスタンスの制御

シナリオ:システム内の特定のクラスのオブジェクトを1つだけ必要とする場合は、シングルトンモードが適切なソリューションです。

工場モード

ファクトリパターンは、主にオブジェクトを作成するためのインターフェイスを提供することです。

シナリオ:コーディング時にどのタイプのインスタンスを作成する必要があるかを予測することはできません。
システムは、製品クラスインスタンスの作成、結合、および表現の詳細に依存しないでください

戦略モード

アルゴリズムファミリは個別に定義およびカプセル化されているため、相互に置き換えることができます。このモードでのアルゴリズムの変更は、アルゴリズムを使用する顧客とは無関係です。

シナリオ:
1つは、実装できるソリューションがたくさんあることです。
いつでもどの方法を実装するかを決めることができ
ます。将来的には多くのソリューションが追加される可能性があります。
戦略モデルでは、ソリューションを変更しても、使用する顧客に影響を与えることはありません。ソリューション。

オブザーバーモード

パブリッシュ/サブスクライブモデルとも呼ばれ、オブジェクト間の1対多の依存関係を定義します。
オブジェクトが変更されると、すべての依存関係の状態が通知され、自動的に更新されます。

シーン

オブジェクトの状態を更新するには、他のオブジェクトを同期的に更新する必要があり、他のオブジェクトの数は動的に変化します。
オブジェクトは、他のオブジェクトの詳細を知らなくても、他のオブジェクトに自身の更新を通知するだけで済みます。

イテレータモード

オブジェクトの内部表現を公開せずに、集約オブジェクトのさまざまな要素に順次アクセスする方法を提供します

シーン

集約されたオブジェクトにアクセスする必要がある場合、これらのオブジェクトが何であるか、トラバースする必要があるかに関係なく、イテレーターパターンを使用します
。stlコンテナーはイテレーターパターンの良い例です。

プロセス、スレッド、コルーチンの違い

プロセス:独自の独立したスタックがあり、共有スタックも共有ヒープもありません。オペレーティングシステムによってスケジュールされます。
スレッド:独自の独立したスタック、共有ヒープがあり、オペレーティングシステムによってスケジュールされます。Coroutine
:共有ヒープと独立したスタックのようにスレッド、プログラマーは手動でcoroutineをスケジュールします

アプリケーションには通常、メインスレッドと複数の補助スレッドがあります。スレッドは並行して実行されます。コルーチンをスレッドで開いて、プログラムを特定の時間に実行できるようにすることができます。

プロセスとスレッドの違い
1.プロセスはリソース割り当ての最小単位であり、スレッドは最小単位を実行しいます
2.プロセスには独立したスペースがあり、スレッドはありません、リソースに依存しないプロセス、スレッドは
大きな共有です3.プロセス実行のオーバーヘッド、スレッドの実行オーバーヘッド小
4.スレッドはプロセッサスケジューリングの基本単位です。プロセスはそうではありません

コルーチンとスレッドの違い:コルーチンは無意味なスケジューリングを回避し、パフォーマンスを向上させることができます。プログラマーはスケジューリングの責任を負わなければならず
、スレッドは標準スレッドのマルチCPU機能を失います。

コルーチンの原則:

コルーチンを1で実行している間、yield return xxxを介してプログラムが中断され、次のコンテンツが実行されます。
コルーチンはスレッドではないことに注意してください。yieldreturnxxxに遭遇する前は、コルーチンメソッドと一般メソッドはつまり、プログラムの実行でyield return xxxが発生した
後、startcontinue()メソッドの後のプログラムが実行されます。まだシングルスレッドモードです。yieldreturnxxxの後、コンテンツを一時的に一時停止し、での実行を待機します。特定の時間。

動的バッチ処理、静的バッチ処理

動的バッチ処理:
Unityには動的バッチ処理が付属しており、Unityでオンにする必要があるため、CPUが消費されます。
制限:
オブジェクトの変換は同じズーム係数を持ち
、同じマテリアル
を使用し、
静的バッチ処理を1つずつレンダリングする必要があります
。静的としてマークするオブジェクト、その後団結と静的バッチ処理でそれを回す
制限:あなたは
、静的を維持する必要があり、変更することはできません
に同じ材料のオブジェクトを変換するために
バッチ処理の一つのバッチは〜15K頂点とオンラインです。

メモリ領域のブロックとは何ですか?個別に保存されるものは何ですか

合計5つのメモリ領域があります:
1。スタック領域:関数パラメータ値とローカル変数格納するために、主にコンパイラによって自動的に割り当てられて解放さます。操作方法は、データ構造のスタックに似ています
。2。ヒープエリア:プログラマーによって割り当てられて解放され、新しく格納されるか、mallocからのインスタンスがプログラマーによって解放さます(割り当て方法はリンクリストに似ています)
3。グローバルエリア(静的領域):グローバル変数と静的変数が一緒に格納され、初期化されますグローバル変数と静的変数はRWの
初期化されていないグローバル変数に配置され、静的変数はZIプログラムの終了後に自動的に解放されます
。4。テキスト定数領域:定数文字列を格納し、プログラムの終了後に自動的に解放します
。5。プログラムコード領域:バイナリを格納しますコード

静的グローバル変数とグローバル変数の違い

1.両方のストレージ領域はグローバル領域(静的領域)と同じ
です2.通常のグローバル変数はソースプログラム全体に影響しますソースプログラムに複数のソースファイルがある場合、このグローバル変数はすべてのソースファイルに有効です
3.staticグローバル変数は、そのスコープを変数によって定義されたソースファイルに制限し、このファイルの関数によってのみ使用でき、他のソースファイルはこの静的変数を使用できません。

コルーチンの原理

ユニティが実行されている場合、コルーチンを呼び出すとIEnumerator(イテレーター)が開始され、コルーチンの実行が開始されます。yieldreturnまでの実行
前は、コルーチンは他の通常のアプリケーションと違いはありませんが、コルーチンに遭遇するとすぐに戻ります。リターンを得た。
機能を、一時的に停止する。次のフレームがFixedUpdateまたは更新が発生した後、降伏復帰条件が成立しているか否かが判断される。
それが満たされている場合、別段のハングアップし続け、下方に実行します

おすすめ

転載: blog.csdn.net/weixin_44302602/article/details/113664307