問題タブ [content-pipeline]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xna - ブラウズ機能を備えたカスタムContentPipeline
カスタムContentPipelineを作成していて、いくつかのNormalおよびSpecularMapプロパティを追加しました。すべてが正常にコンパイルされ、期待どおりに機能します。ここで実行したいのは、ユーザーがボックスをクリックしたときにNormalプロパティとSpecularプロパティを「参照可能」にすることです。現在、ユーザーは通常のファイルまたはスペキュラーファイルの名前を入力する必要があります。私が望むのはFontプロパティのようなものです。ユーザーがFontプロパティをクリックすると、3.
秒のボックスが表示されます。
この機能を取得するにはどうすればよいですか?出来ますか?
c# - Xna コンテンツ パイプライン拡張機能 - カスタム プロセッサ内での他のコンテンツの読み込み
現在、Xna Content Pipeline 拡張機能を試しています。その実験の中で、読み込みが必要な別の「コンテンツ項目」を含むファイルを読み込もうとしています。例えば:
これで、コンテンツ プロセッサで「CustomItem」の新しいインスタンスを作成し、名前フィールドを初期化できます。これは単純な文字列だからです。ただし、コンテンツのコンパイル中にテクスチャ ファイルをロードできません (注: テクスチャは単なる例です。理想的には、他のコンテンツ タイプをロードできるようにしたいと考えています)。
私が探しているのは次のようなものです:
これが実際に可能かどうかは誰にもわかりません。可能であれば、他のコンテンツ アイテムをレイト ロードしたり、バイナリ リーダーとライターを使用して独自のカスタム コンテンツ ロードを作成したりする方法は避けたいと思います。
xna - コンテンツパイプラインのないxna公開プロジェクト?
XNA の学習目的で個人的なプロジェクトに取り組んでいます。コンテンツ パイプラインを使用するには、xna ランタイムをインストールする必要があることをオンラインで読みました。そこで、Texture2D.FromStreamを使用してファイルをロードすることにしました。
Visual C# からプロジェクトを実行しているときはすべて問題ありませんが、プロジェクトを公開して実行すると、すぐにクラッシュしました。クラッシュに関する詳細情報を確認する方法があるかどうかはわかりませんが、ないと思います。コンテンツ パイプラインを使用していないことが原因だと思います。
公開されたプロジェクトのアプリケーション ファイルの中を見ると、.xnb ファイルだけが表示されます。私が使用している生の.pngおよび.xmlファイルはありません。
そこにファイルを手動で配置しようとしましたが、うまくいきませんでした。ファイルはすべて「Projectname\bin\x86\Debug\Content」フォルダーにあります。
誰でも何か考えがありますか?
編集
コンテンツ パイプラインを使用するように contentmanager を書き直したところ、公開されたプロジェクトが PC で正常に動作するようになりました。そのため、コンテンツ パイプラインなしで機能させる方法を見つけなければなりません。
c# - XNA でのリアルタイムのリソース更新
XNA で実行時にテクスチャやその他のコンテンツ ファイルを更新する方法を探しています。これにより、アプリケーションの外部で変更された場合、フォーカスが戻ったときにゲームで自動的に更新されます。
これは、Texture2D とストリームからの読み込みで可能のようですが、特定のリソースへの直接パスを取得できません。
これはコンテンツ パイプラインと .xnb では機能しないことを認識していますが、デバッグと開発の目的では非常に便利です。
このようなものが XNA で正常に実装されているのを見た人はいますか?
c# - XNA のカスタム コンテンツ パイプライン、拡散テクスチャを手動で設定する方法は?
XNA は蜂の膝のようなものですが、カスタム コンテンツ パイプラインを完全に理解することはまだできません。
MSDN の法線マップ サンプルのようないくつかの基本的なサンプルでは、.fbx ファイルの不透明なデータの法線マップ キーを適切な法線マップ テクスチャに割り当ててロードする方法を示しています。.fbx ファイルで定義されているかどうかにかかわらず、キーに名前を付ける必要があること、実際に不透明なデータが何であるかを彼らがどのように知っていたのかさえわかりません。
興味深いことに、拡散テクスチャがどのように設定されるかを示すコードがコンテンツ パイプラインにないことです。これは、「テクスチャ」という名前のシェード パラメータを使用すると自動的に設定されることを暗示しているようです。しかし、パラメーターの名前を別の名前に変更すると、モデルはテクスチャなしで読み込まれます。
ディフューズ テクスチャをロードすることを暗示的に知るにはどうすればよいですか? また、たとえば、ディフューズ テクスチャをロードして別の名前のシェーダ パラメータで読み込み、デフォルトのニュートラル ホワイト テクスチャ ファイルが存在しない場合はそれをロードするにはどうすればよいですか?
さらに言えば、コンテンツ パイプラインを使用してカスタム ロード モデルを学習するための「Hello World」の例はありますか?
プロパティ ウィンドウでテクスチャを設定して、.fbx モデルの既存のテクスチャ参照をオーバーライドしようとしているわけではないことに注意してください。
.net - XNAのContentManagerからコンテンツタイプを取得する
XNAゲーム用のコンテンツエディターを作成していて、コンテンツリーダーとライターの準備ができています。私のエディターでは、フォルダー内のすべてのファイルを繰り返し処理して、エディターウィンドウにオブジェクトのリストを表示します。設定は完了しましたが、コンテンツフォルダのファイルリストを取得した後の作業に固執しています。
すべてのファイルにはXNB拡張子が付いており、それらを読み取る唯一の(ハッキーではない)方法は、XNAコンテンツリーダーを使用することです。ただし、ファイルを1つずつロードしてそれぞれをロードしようとせずに、ファイルのコンテンツタイプ(マップ、ゲームオブジェクトテンプレート、または私が定義した他の多くのタイプのファイル)を事前に知りたいです。可能なコンテンツタイプのそれぞれで、それは事実上不可能です(または、たとえば、これまでで最悪のプログラミング慣行)。
この機能のようなものを取得するにはどうすればよいですか?
ContentManager.ContentTypeOf(string assetPath);
これは型を返すので、何をどこにロードするか(ロードしないか)を事前に知ることができます。単一のオブジェクトテンプレートを編集するためだけにゲームのすべてのマップをロードすることはお勧めできません。コンテンツファイルの種類を区別するための実用的な方法が必要です。
c# - XML ファイルのビルド コンテンツへの参照からテクスチャをロードする
ゴール
Texture2D
プロセッサーを使用せずに、デフォルトのインポーター (XML コンテンツ) を使用して、xml ファイルからを含むカスタム クラスをロードしようとしています。
アプローチ
オンラインで多くの調査を行い、他のエラーを処理することで、次の XML にたどり着きました。
はい、ハードコードされたパスも好きではありませんが、カスタム リーダーやライターを使用せずにこれを機能させることができれば、それを使用Texture2D
できます。
以下は、クラスのコンテンツ バージョンです (パイプラインで使用されます)。
以下は私のランタイムバージョンです:
問題
以下を試してみると、var test = Content.Load<EntityTemplate>("BulletTemplate");
次のエラーが表示されます。
「弾丸」の読み込み中にエラーが発生しました。ContentTypeReader Microsoft.Xna.Framework.Content.Texture2DReader、Microsoft.Xna.Framework.Graphics、Version=4.0.0.0、Culture=neutral、PublicKeyToken=842cf8be1de50553 は、既存のハンドラー Microsoft.Xna.Framework.Content.ReflectiveReader`1[[Microsoft .Xna.Framework.Graphics.Texture2D、Microsoft.Xna.Framework.Graphics、Version=4.0.0.0、Culture=neutral、PublicKeyToken=842cf8be1de50553]]、Microsoft.Xna.Framework、Version=4.0.0.0、Culture=neutral、PublicKeyToken Microsoft.Xna.Framework.Graphics.Texture2D 型の場合は =842cf8be1de50553。
ランタイム リーダーは、Texture2D
アセットを処理するための 2 つのリーダー、ReflectiveReader<Texture2D>
リーダーとを見つけたようTexture2DReader
です。
質問
この問題を解決するにはどうすればよいTexture2D
ですか? ロードされたテクスチャを参照するプロパティを使用して、オブジェクトが正しく取り込まれますか?
注:別の文字列プロパティを追加して、オブジェクトにメソッドなどを作成したくありませんLoadContent
。Content.Load
私は私が電話する必要がある唯一のものになりたいです。
また、プロパティを含むすべての型に対して独自のリーダー/ライターを作成することも避けたいと考えていTexture2D
ます。
理想的には、Texture2D またはサブクラスのラッパー クラスを作成することは避けたいと考えていますが、代替手段がない場合は、これを行うソリューションに満足しています。
c# - C#フォームでのXNAコンテンツパイプラインの使用
C#フォームを使用してゲームエディターを作成しようとしていますが、逆シリアル化に関して問題が発生しました。プロジェクトにコンテンツ参照を追加するオプションさえないため、フォームアプリケーションでコンテンツパイプラインを使用できません。フォームアプリでコンテンツパイプラインを使用するにはどうすればよいですか?XMLコンテンツをロードして逆シリアル化する別の方法はありますか?
c# - XNAでTexture2Dをプログラムでシリアル化する
JPEG / PNGを受け入れ、Texture2Dコンテンツを含むXNBファイルを出力するXNAゲーム用のゲームエディターを作成しています。
私は自分のカスタムなどのカスタムシリアライザーを持っており、Reflectionなどを使用してContentCompilerを呼び出すことにすべてを掘り下げて、実際の汚い部分に取り掛かり、実際にその部分を自分のフォーマットで機能させることができます。ただし、XNAがコンパイル(プロジェクトのビルド時にVisual Studioで)およびロード(最もよく使用されるContent.Loadメソッドを使用するゲームで)する方法を知っている通常のTexture2D形式にシリアル化する必要があります。自分のイメージを作成したくありません。このためのファイル形式は明らかです。Texture2Dをコンパイルしようとすると、エラーは発生せず、XNBファイルが作成されますが、ファイルの内容は画像データではなく、わずか3〜4 KBのオーバーヘッドです(これは私がTexture2Dオブジェクトの他の非イメージプロパティだと思います)。
コンパイルに使用するコードは次のとおりです。
私は自分のコンテンツプロセッサを持っており、このコードはそれらと完璧に連携します。これは、ContentCompilerのCompileメソッドを呼び出すだけですが、Reflectionを使用します(内部クラスであるため)。
Texture2Dがシリアル化される理由はわかりませんが、実際のビットマップデータはありません。
編集 申し訳ありませんが、Texture2Dをコンパイルしません(GraphicsDeviceの循環参照について文句を言います)。Bitmapオブジェクトをコンパイルしようとすると、エラーなしでコンパイルされますが、実際のビットマップデータはシリアル化されません)
c# - Xnaコンテンツパイプラインとテクスチャ
コンテンツプロセッサとテクスチャに頭を悩ませようとしましたが、少し混乱しています...2つのシナリオがあります。
1つはテクスチャを含むモデルで、インポーターはxmlをロードし、テクスチャファイル名をプロセッサに渡しますが、テクスチャへのコンパイル時の参照であると思われるTextureContentしか取得できませんが、これは役に立ちません。モデルのTexture2Dビットにデータを入力します。
2番目のシナリオは、テクスチャプロセッサに便乗して、テクスチャファイルからスプライトマップオブジェクトを作成することです。スプライトマップは、基本的に、テクスチャとスプライトの幅/高さを含むモデルです。
私を困惑させ続けるのは、モデルとしてのこれらのExternalReferenceとTextureContentです。
それから私はそのようなコンテンツプロセッサを持っています:
プロセッサにTextureContentが与えられていると文句を言いますが、それはテクスチャではありません...しかし、何らかの理由で、contentManagerを介してロードされると、TextureContentが魔法のようにTextureに変わるようです...この場合、どのようにテクスチャを取得できるかについて。どちらのシナリオもかなり似ているので、どちらかを解決すれば両方を解決できると確信していますが、理想的には次のようになりたいと思います。
この一見魔法のようなプロセスを機能させる方法を誰かが説明できれば、私はあなたに多くの賞賛を与えます!