問題タブ [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.
xml - content.load XMLを使用するXNAは、常に同じオブジェクトを返しますか?
スプライトシートデータにxmlファイルを使用しようとしています。長方形または別のフレームのリストを保持するフレームクラスがあります(フレーム自体、またはより多くのフレームのホルダーにすることができます)。xmlは、フレームのすべての長方形を保持します。コンテンツプロジェクトにxmlを追加し、Content.load( "xmlname")を使用してロードしました。
一度使用すると、これはすべて完全に正常に機能します。しかし、同じスプライトシート(したがって同じxmlデータファイル)を共有する2つのオブジェクトを作成すると、これら2つのオブジェクトが同じフレーム上にあると消えます。多くの不満を感じた後、xmlファイルは常に同じオブジェクトを返すため、フレームを共有するため、一度に1か所しかフレームを描画できないことがわかりました。
xmlファイルの短い部分は次のとおりです。
クラスの簡略版:
使用例:
手動でxmlを逆シリアル化しようとしましたが、リストの逆シリアル化は悪夢です。私はここで何か間違ったことをしていますか?同じオブジェクトを返すほど奇妙に思えます
visual-studio - コンパイル前にCultureInfoを設定し、その後は常にリセットします
XNAコンテンツパイプラインプロジェクトのコンパイル時に使用されるロケール/カルチャを変更し、コンパイルの終了後に元のファイルを復元するタスクを実行しようとしています。英語以外のマシンでフロートを適切に解析できるようにすることを目的としています。
これまでのところ、BeforeBuildとAfterBuildを次のように使用しています。
コンパイル中にエラー(無効なXMLまたはContentSerializerエラー)が発生した場合を除いて、正しく機能します。その後、ロケールはリセットされません。SOの答えは矛盾しています。AfterBuildは常に実行される(私の場合はそうではない)と言う人もいれば、ビルド後にターゲットが常に実行されるようにする方法がないと言う人もいます。私はグーグルの周りにこれに関する正確な情報を見つけていません。
PostBuildEvent
常に実行するように使用および設定するオプションがあることは知っていますがExec
、コマンドを実行するために使用し、別のスレッドで実行され、その目的を無効にする可能性があります(CurrentThread.CultureInfo
ロケールを変更するように設定しました)。
それで、ターゲットが常に実行されるようにする方法はありますか?または、特定のカルチャでコンパイルを実行するようにVS2010に指示する他の方法はありますか?
問題を明確に説明するドキュメントへのリンクをいただければ幸いです。
-セバの答えに従った最終的な解決策-
XNAのコンテンツパイプラインは宣言PreBuildEvent
も。もしませんPostBuildEvent
。その他の必須プロパティ(、、RunPostBuildEvent
およびPreBuildEventDependsOn
)PostBuildEventDependsOn
も定義されていません。ただし、それらを定義すると、コンテンツパイプラインは他のプロジェクトと同様にそれらをうまく利用します。
したがって、contentcsprojファイルに加えなければならない変更は次のとおりです。
このソリューションでは、別の問題が間接的に処理されます。これは、別のプロジェクトがBeforeBuildまたはAfterBuildを再定義し、一方の定義が他方を上書きした場合に発生する可能性のある潜在的な問題です。
xna - Xbox ゲーム プロジェクトでのコンテンツ パイプラインによる書き込み
Xbox アプリケーションを作成していますが、コンテンツ パイプラインでこの問題が発生しています。.xnb ファイルのロードは問題ではありませんが、コンテンツ パイプラインを介した書き込みに関する役立つチュートリアルが見つからないようです。ユーザーがカスタムメイドの「保存」ボタンを押すたびに XML を書きたいと思います。「ゲームの状態を保存する」などについてウェブを検索しましたが、これまでのところ、私の場合の解決策は見つかりませんでした。
要約すると、Save() メソッドが呼び出された場合、コンテンツ パイプラインを介して (XML 形式で) データを書き込む方法はありますか?
乾杯
c++ - Visual Studio でコンテンツ パイプラインを整理する
(これは XNA コンテンツ パイプラインに関するものではありません)
Visual Studio を使用してコンテンツ パイプラインを実装しようとしています。
- プロジェクト A はファイル a を生成します
- プロジェクト B はファイル b を生成します
- a と b は、出力ファイル a' と b' を生成する外部圧縮ツールに渡されます。
- a'、b' およびいくつかの追加のメタ情報がプロジェクト C に渡され、ファイル c にマージされます。
- c は最終的に実際のプロジェクト D に渡されます
A/B から D までのこのプロセス全体には、およそ 10 ~ 20 分かかります。当然のことながら、あまりダウンタイムを発生させずにこれらのプロジェクトの作業を続けることができるようにするために、これをできるだけ頻繁に実行しないようにしたいと考えています。また、パイプラインは簡単に拡張できる必要があります。
パイプライン全体は、VS10 Makefile プロジェクトのさまざまなコマンド ライン呼び出しを使用してそのまま実行されます。したがって、コンテンツ ファイルやプロジェクトがまったく変更されていなくても、ソリューションをビルドするたびにパイプラインが実行されます。
明らかに、それは最も賢明な方法ではありません。では、このような問題に対する通常のアプローチは何ですか? カスタムビルドステップ? バッチファイル?
msbuild - アイテムが「なし」に設定されている場合、その場でコンテンツ プロジェクトをビルドしてもコピーされない
そのため、その場で ContentProject を作成し、それをビルドするツールを構築しています(Xnb を出力するように)。'always' または 'PreserveNewest' . .contentProj を見ていたら、ビルドすべきではなくコピーすべきファイルのセクションは次のようになります。
ただし、コンテンツ プロジェクトをオンザフライで構築しているため、プロジェクトを作成してアイテムを追加するには、次のコードが必要です。
最後にビルドコード
BuildRequest では、空の配列はターゲットであるパラメーターを受け取ります...ビルドから、実際にはファイルを出力せずに依存関係の dll をメインフォルダーにコピーするまで、さまざまなことを行う多くの異なるターゲットを通過しましたが、必要なものはコピーしませんでした
乾杯
c# - XNAの自動XNBシリアル化でサポートされているタイプはどれですか?
自動シリアル化に関するShawnHarvgreaveのブログエントリとコンテンツパイプラインの概要に関するMSDNの記事を読みましたが、サポートされているタイプのリストが見つかりませんでした。
MSDNの引用:
XNA Game Studio 3.1以降、カスタムデータの.XNB形式へのシリアル化は、既存のコンテンツタイプライターがない単純なタイプに対して自動的に実行されます。
自動シリアル化でサポートされていないと推測しているQueue
を使用しようとするまで、これに問題はありませんでした。System.Collections.Generic
それで、これによってサポートされるタイプのリストはありますか?そして、それがサポートされていない場合、私は自分ContentTypeWriter
で書く必要がありContentTypeReader
ますか?
c# - XNA-インストール時にデフォルトでsettings.iniをゲームに追加するにはどうすればよいですか?
インストール時にゲームに含めたいsettings.iniファイルを取得しました。これは、[設定]というフォルダーにあり、ゲームの他の部分と同じディレクトリにある必要があります(実行可能ファイルやデフォルトのコンテンツフォルダーなど)。
ゲームソリューションに空のコンテンツプロジェクトを追加し、settings.iniファイルを追加するだけだと思いました。
何だと思う!動作しません。
次のエラーが発生します。
エラー6「Settings.ini」に使用するインポーターを自動検出できません。このファイルタイプを処理するインポーターはありません。プロジェクトでこのファイルタイプを処理するインポーターを指定します。PATH_TO_GAME \ Settings \ Settings.ini
少しググったのですが、自分でコンテンツパイプラインを書く必要があるようです。
これを行うためのより良い/より簡単な方法はありますか?この非常に難しい部分を書くことに時間を無駄にしたくありません。
PS。ゲームをインストールしてsettings.iniをsettingsディレクトリに追加すると、settings.iniファイルに読み書きできます。ただし、settings.iniファイルを手動で追加する必要があります。これは不要です。インストール時にゲームに付属してほしいです。
c# - XNA-複数のファイルとフォルダを自動的にインポートし、それらのプロパティを設定する
私は現在、ゲームの各レベルが物理的なレイアウトを示すテキストファイル(xnaプラットフォーマーの例と同様)と、レベルに関する残りの情報を含む対応するxmlファイルで表されるゲームプロジェクトに取り組んでいます。各テキストファイルとxmlファイルは、レベルのIDにちなんで名付けられた独自のフォルダーに配置されます。
残念ながら、これは、各フォルダーを手動で作成してから2つのファイルをインポートし、両方のファイルでビルドアクションを「none」に設定し、「出力ディレクトリにコピー」を「copyifnewer」に設定する必要があることを意味します。
大量のファイル/フォルダーに対してこれを自動化する方法はありますか?または、別のシステムを試す必要がありますか?
3d - モデルの頂点バッファーとインデックスバッファーに関する混乱
ゲームの静的背景として使用される複数のメッシュ(つまり、木、車など)を含むモデルファイルがあります。私の目標は、モデルの頂点とインデックスを2つのバッファーとして保存し、これらのバッファーをGPUに割り当てることです。しかし、私は行く途中で少し混乱しています。
このRiemerのXNAチュートリアルでは、モデル自体に1つの大きな頂点バッファーと1つの大きなインデックスバッファーがあり、すべてのメッシュ(およびメッシュパーツ)の情報が含まれていると述べていますが、これらのバッファーにアクセスすることはできないようです。ただし、ModelMeshPartsのバッファーにアクセスすることは可能ですが、それらすべてを1つのバッファーに連結することはできません。
私の推測では、モデルプロセッサを拡張して、実行時にモデルの頂点とインデックスを配列に格納します。Riemerは、これらのバッファーはすでに定義されていると言っているので、そうするためのより簡単な方法はありますか?私はその声明について混乱しています。
答えてくれてありがとう。