はあなたがスペース、ロード時間を節約し、あなたのバイナリ、とあなたのテクスチャをコンパイルすることができます、あなたが気にしている場合、編集/不正使用からあなたの資産を保護しますそのことについて。フリップサイドで、アセットを編集可能(テクスチャパックなど)にしたい場合は、FromFile()
が有効です。このファイルは、通常の使用方法で期待通りのディレクトリに存在していなければなりません。
最終的には、コンテンツをロードする場所を決定することをお勧めします。コンテンツの読み込みには、ディスクからの読み込みが必要であることを覚えておいてください。これは、すべてのフレームを確実に実行したいものではなく、ゲーム中にやってみたいことではありません。あなたはゲームの状態管理を設定して、画面やゲームの起動中にコンテンツを完全に読み込むことができます。もちろん、これはどのレベルのローディング画面が対象ですか?あなたが非常に巧みであれば、Metroid Primeの「ドアローディング」のゲームプレイ中の一時停止中に読み込まれることがあります。しかし、あなたのゲームの範囲と資産によっては、そうしたように動的にロードする必要はありません。
最後に、資産をダンプすることについての答えは、オブジェクト指向プログラミングの偉大な洞察です:抽象化。メンバーの整理に問題がある場合は、必要に応じて継承されたクラスまたはサブクラスに移動してください。私のゲームデザインでは、2つ以上のゲームがほとんどありません。Texture2D
、1 SoundBank
、おそらくVertexBuffer
/IndexBuffer
です。私がうまく設計していれば、これらは、すべてのビジュアルオブジェクトが継承する「スプライト」のような基本クラスに格納されます。私の最新のツールでは、レベルが1つ上がりましたので、実際のテクスチャにアクセスしたい場合は(スプライト).Animation.Texture
のように見えますが、すべてのアニメーション/、Animation
クラスによって完全に処理し、Position
、Rotation
、Scale
、Bounding
とともにスプライトによって更新される描画など
ので、オブジェクトにあなたのゲームを打破します。 とVector2 PlayerPos
をGame
クラスに格納し、Draw
にPlayerTex
を描画する場合は、PlayerPos
に描画するので、オブジェクト指向プログラミングを利用できません。PlayerTex
とPlayerPos
をPlayer
クラスに格納します。これは、プレーヤのその他のアスペクトや動作(メソッド)もすべて定義します。 Game
に必要なのはPlayer myPlayer
、Draw
の場合はmyPlayer.Draw(SpriteBatch .. etc)
となります。さらにそれを取ることができます!ここではいくつかのクラスは、すべてのゲームがありますほとんどです:Entity
(すべての動的オブジェクトの基本クラス)、Level
(店舗の風景と各レベルのEntities
とそれらの相互作用を扱う)、GameScreen
(店舗は、それぞれの完了時にそのLevel
メンバーをインクリメント)、 ScreenManager
(GameScreen
のように更新するためにScreen
のスタックを格納しますが、MenuScreen
、PauseScreen
、LoadingScreen
)...リストが続きます。この時点で、すべてのあなたのGame1
クラスが更新ScreenManager
でない、とあなたはIDrawableGameComponent
からScreenManager
を継承する場合は、あなたもそれを行う必要はありません。
は、私はOO 101の奥にすぎ潜っていないと思っているが、あなたはあなたのメインクラスのすべてのメンバーを追跡する問題を抱えているなら、あなたは物事を打破するために開始する必要があります。それは基本的なオブジェクト指向のスキルです。
その他すべてが失敗した場合は、#region <name>
/#endregion
タグを自由に使用する方法を学んでください。正直言って、とにかくそれらを使用して、すべてをより良くします。
ありがとうございます。私は地域を使っていますが、それはちょうど1つの場所でコードの大量のように思えます。私はscreenmanagerと呼ばれるものを見つけました。私はそれを調べなければならないもののようです。 –