0

私は XNA ゲームを作成していますが、これは多くの (現在 ~2800) の小さなリソース ファイルを使用しています。それらをアーカイブせずに場所から場所へ移動することが問題になっているので、できればそれらを圧縮して、ゲームがメモリに自動的に解凍できるようにすることができるのではないかと考えました。書き込み機能はまだ必要ありません。現在は読み取りのみです。

フォルダーをメモリに解凍し、ディスク上の通常のファイルと同じように、または同じように簡単にそれらのファイルにアクセスする簡単な方法はありますか?


私はいくつかの同様の質問を読んでいますが、多くの人が、OS (私の場合は Windows) が RAM ドライブよりもファイル キャッシュをうまく処理できると言っています。今のところ、ファイルを解凍して読み取るだけですが、将来、新しいファイルを変更または作成する必要が生じる可能性があり、ユーザーにとって迅速かつシームレスにしたいと考えています。将来の目標を考慮して、現在の問題を解決するために別のアプローチをとるべきでしょうか?

4

1 に答える 1

0

私は個人的にこれを試したことはありませんが、メモリ内で圧縮/解凍できるようにしたい場合は、 a を使用してMemoryStreamそれをライブラリに渡すことができます (例: https://github.com/icsharpcode/SharpZipLib )。おそらく覚えておく必要があることは、ボトルネックを別のボトルネックに移動しているだけですか?

HTML のスプライトを使用したアプローチのようなものを試すこともできます。すべての Zip を 1 つに結合し、ファイル内の場所へのインデックスを付けます。次に、FileStream.Position を探しているリソースの場所に移動し、(必要な量を) 読み取り、必要な処理を行います。いずれかを再構築する場合は、すべての結合インデックスなどを再構築するようにする必要があります。その後、1 つのファイルをコピーするだけで、そのファイル内に ~2800 の小さなセグメントが含まれることになります。

于 2013-03-05T04:58:56.963 に答える