7

私は XNA ゲームを作成しています。ゲーム アプリケーション全体を再構築しないと編集できないものをテストすることがよくあります (エディット コンティニュは機能しません)。ゲームはリソースをロードする必要があるため、実際にテストする段階に到達するにはかなりの時間がかかる場合があります。

私がやりたいことは、リソースをバッキング アプリケーションにロードし、何らかの方法でゲーム アプリからそれらにアクセスできるようにすることです。これにより、ほとんどの場合、ゲーム アセットをリロードする必要がなくなります。.Net アプリケーションで可能ですか、それとも知っておくべき他のアプローチはありますか?

私の XNA ゲームは、インスタンス、特に複数のオブジェクトTexture2Dを持つライブラリ クラスに大きく依存しています。Dictionary<string, Texture2D>

私ができるようにしたいのは、ゲーム アプリ内からバッキング アプリのそれらの辞書に直接アクセスできるようにすることだと思います。XNA ゲームは 32 ビット プラットフォームのみをターゲットにすることができます。バッキング アプリを 64 ビットにして、1 (.5) ギガバイト以上のリソース データを保持できるようにしたいと考えています (可能な場合)。


この場合、単体テストのアプローチ (またはリソースの一部を使用しないことを意味するもの) は機能しません。これは、私が視覚効果を開発しており、所有しているすべてのテクスチャが関係しているためです。

4

4 に答える 4

2

リロードコンパイル済みの dll をリソースでいっぱいにアンロードしたい場合は、アプリケーション ドメインを確認することをお勧めします。つまり、それを使用してアセンブリをアンロードおよび再ロードできます。ただし、「プロキシ」を介してコンテンツにアクセスする必要があります。アセンブリを直接アンロードすることはできないため、ドメインが必要です。

アイデアは、決して閉じないマスター アプリケーションをロードすることです。次に、独自のアプリケーション ドメインにロードする別の Game.dll があります。次に、すべてのリソースをマスター アプリケーションに読み込みます。そのため、ゲームがリソースを取得するための「プロキシ」インターフェイスを作成する必要がありますが、それは実行可能なはずです。

これの良いところは、game.dll を停止して再コンパイルし、アセンブリを再読み込みして、まだ読み込まれているリソースを与えることです。

1 つの可能なルート。

于 2013-03-17T18:41:43.247 に答える
0

リソースに動的なプロバイダー/サーバーが必要な場合は、さまざまな可能性があります。C#を使用すると、feWCFを使用してリソースを提供できます。ただし、前述のように、ゲーム全体を開始するのではなく、実際に単体テストを使用できるように、設計を切り離してみる必要があります。

http://en.wikipedia.org/wiki/Unit_testing

于 2013-03-17T18:40:27.543 に答える
0

WCF名前付きパイプを使用しないのはなぜですか?

Set(string spriteName,Texture2D texture)WCF serverを使用してアプリケーションを作成し、提供するだけですnamed pip

それはテクスチャを変更します..

于 2013-03-24T08:08:04.140 に答える
-1

すべては、実行時にロードするリソースのタイプに依存します。テクスチャ/サウンド アセットをテストするだけの場合は、 Texture2D.FromFileおよびSoundEffect.FromStream (PCM ウェーブ ファイルでなければなりません) メソッドを使用してこれに取り組むことができます。ただし、モデルを動的にロードする場合は、少し余分な作業が必要になります。このサンプルを適応させることで、必要なことを達成できるはずです。

于 2013-03-17T18:21:26.097 に答える