XNAでのプログラムによるフォント、テクスチャ、およびメディアの読み込み


7

これまでのところ、私のリズムゲームでは、XNAのコンテンツパイプラインを使用して、アプリに静的リソース(ビデオ、サウンドエフェクトなど)を読み込んでいます。ただし、将来的には、ユーザーが独自のテーマを作成できるようにしたり、再生する曲に合わせてカスタムノートチャートを作成したりしたいと思っています。リソースへのファイルパスを指定して、コンテンツパイプラインを使用せずにディスクからTexture2DまたはVideoオブジェクトをロードする方法はありますか?

編集:これはXNAだと思っていても、Windowsのみをターゲットにしています(Zune、WP7、Xbox 360は対象外)。

回答:


4

Texture2D.FromFileメソッドを使用します。最初のパラメーターにGraphicsDeviceは、Gameクラスのプロパティであるyour を指定します(したがって、Gameクラスのメソッド内から、を使用しますthis.GraphicsDevice)。

残念ながら、Texture2Dこの方法でロードできるのはオブジェクトだけです。オブジェクトは、ロードするのは簡単ではありませんVideo


ちなみに、私のアプリでは、実行時にオーディオとビデオを読み込むことが非常に重要になるため、これは悪いニュースです。
ThatsGobbles

1
ただし、すべての希望が失われるわけではありません。リンクされた質問の2番目の答えを見てください。XNA 3.1では、実行時にビデオまたはオーディオをコンパイルして実行できるように見えます。stackoverflow.com/questions/1949264/...
Ricket

@Ricketええ、これらをコンパイルできるようにするためだけにユーザーにGSのダウンロードを強制することはできないので、私はまだ行き詰まっています。DirectShow VideoPlayerを調べようとしていますが、古くて気難しいです。
ThatsGobbles

しかし... 3.1でも2.0でも、XNAをインストールする必要があります。違いは何ですか?
リケット

XNAランタイムは常に必要です、はい(私が正しく思い出せば)。ただし、そのMSBuildメソッドでは、Game Studio 全体をユーザーのコンピューターにダウンロードする必要があります(GS 4.0は約400 MBのISOです)。
ThatsGobbles

3

MSBuildを使用して、実行時にコンテンツビルドプロセスを実行することは完全に可能です。次のサンプルは、基本的にその方法を示しています:http : //creators.xna.com/en-GB/sample/winforms_series2。この特定の例ではWindowsフォームを使用していますが、実際のゲームで同じことを行うことを妨げるものは何もありません。

大きな問題は、コンテンツパイプラインアセンブリ(ビルドに必要なすべてのプロセッサ/インポーター/ビルドタスクがある場所)がXNA Framework再頒布可能パッケージに含まれていないことです。つまり、カスタムコンテンツを実際に作成および/またはロードするには、ユーザーがゲームのビルドに使用したXNA Game Studioのバージョンをインストールする必要があります。含まれているソフトウェアを実際に使用する必要はありませんが、インストールする必要があります。ゲームや、カスタムコンテンツを作成して使用する予定のユーザーによっては、これが許容される場合と許容されない場合があります。


ユーザーのコンピューターにXNA GSをインストールする必要がなければ、これは完璧だったでしょう。
ThatsGobbles

それは確かに残念です。XNAチームがContent PipelineをRedistに取り込もうとしているのを数年前(数年)に取り乱したことを覚えていますが、それは最近のいくつかのバージョンでは発生していません。パイプラインが実行されないPCプラットフォーム。
mikthom

理にかなっていますが、そうですが、PCのみのXNAゲームには少々面倒です。
ThatsGobbles

1

一部のコンテンツプロセッサは、たとえばStreamを取り込んで中間オブジェクト(実際のMeshオブジェクトではなく、メッシュを構築するために必要なデータなど)を生成するなど、負荷の大きい処理を行うクラスを公開します。中間オブジェクトを消費したい最終オブジェクトに変換するために、いくつかの追加処理を実行できる場合があります。これらのクラスのいくつかは、実際に最終的なオブジェクトを吐き出すことさえあります。コンテンツの種類によって異なります。私は、関連するコンテンツタイプについてコンテンツプロセッサを掘り下げ、役立つ情報が公開されていることを確認することをお勧めします。いくつかのビットを自分で書き換える必要があるかもしれませんが(Reflectorはあなたの友達です)、「プリコンパイル済み」のアセットを本当に使いたくない場合は、努力する価値があります。


推奨事項や例へのリンクはありますか?現在インポートできないメディアタイプはビデオだけです。IIRCは2つのうちの1つであり、手動でロードすることは不可能と考えられています。
ThatsGobbles
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.