コアの問題は、私が見ることができるものから、C ++またはUnity3Dではなく、あなたは、高レベルのソリューションまたは低レベルのソリューションが必要です。
低レベルのソリューションは、入力の処理、メモリの管理、モデルのロードなどのプロセスで汚れるソリューションです。高レベルのソリューションは、Unity3Dのような1つのきちんとしたパッケージを取得することです。
私にとって、Unity3D(または他のゲームエンジン)を使用するかC ++を使用するかは、ゲームとプロジェクトの目標に依存します。
開発時間を短縮する必要がある場合や、ゲームのパフォーマンスが集中していない場合、またはグラフィック/計算パフォーマンスの上限に達していない場合は、Unity3Dを使用します。ゲームプレイに集中したい場合で、Unity3Dが提供するデフォルトのツールで問題ない場合は、Unity3Dの使用を検討できます。
C ++と他のライブラリを使用すると、開発時間が長い場合、ゲームに必要な計算能力やグラフィック能力が増えるか、Unity3Dに組み込むことができないテクノロジーが採用されます。
Unity3Dの良いところは、実際の開発(C#またはJavaScript)を反映したスクリプト言語をまだ採用していることです。学んだOOPとソフトウェアエンジニアリングの概念(シングルトン、ファサード、ステートマシン、デコレーター、コンポジション)をUnity3Dに適用できます。リソース管理、シーングラフ、モデルの読み込み、レンダリング、シーンの保存などのクッキーカッタープロセスを処理するのに役立ちます。さらに、Unity3Dが提供しない必要な機能があれば、できます。 DLLコーディング。
それはC ++をどこに残すのですか?C ++は言語であり、C ++で行うことができる多くのプログラミングの概念があり、Unity3D、メモリ管理、またはテンプレートを使用できます(Unity 3.2では、言語仕様が改善され、クロージャーをカバーするようになりました)。
それで、私が述べたように、それは本当にC ++対Unity3Dではありません。Unity3Dと比較して、「C ++ plus libraries / SDK or roll your own engine」のようなものです。それはあなたの目標と目的に依存します。ハイエンドゲームや、レンダリングパイプラインや入力を制御する必要があるゲームの場合、C ++に加えて、ボンネットの下で混乱させるエンジンを使用することもできます。そうでない場合は、3Dゲームのデフォルトの選択肢としてUnity3Dを使用します。
ただし、Unity3dの知識は内部的な経験ではありませんが、ゲーム開発の全体的なプロセスを学ぶための出発点として適しています。たとえば、おそらくレンダラーを作成してOpenGLでモデルをロードするには、学期分の勉強が必要になり、さらに基本的なシーングラフと入力が必要になります。Unity3Dで1日以内に完了します。