Delphi Prism と XNA Game Studio 3.0 をインストールしました。Delphi Prism XNA チュートリアル 1「画面に 3D モデルを表示する」( http://msdn.microsoft.com/en-us/library/bb197293.aspx ) に翻訳することができました。プロジェクトは正常にコンパイルされますが、モデルをロードできません。Delphi Prism にはない新しい「contentproj」タイプが XNA にあるようです...それを機能させる方法はありますか?
5 に答える
msbuild を使用してコンテンツ プロジェクトを手動でビルドすることもできます。ソリューションエクスプローラーでコンテンツを追加して設定を変更するだけの統合はできないかもしれませんが、うまくいきます:-)
これについての詳細は次のとおりです。http://blogs.msdn.com/shawnhar/archive/2006/11/07/build-it-ahead-of-time.aspx
最終的には、1) コマンド ラインから MSBuild を使用して "*.contentproj" をビルドし、2) 結果の "Content" ディレクトリを、Delphi Prism 実行可能ファイルが出力されるサブディレクトリとしてコピーすることで、なんとか動作させることができました。
Delphi Prism が *.contentproj を自動的に認識し、自動的にビルドしてくれるとよいでしょう。
私はまだXNAのことをしていませんが、これが私の最善の推測です:-)
つまり、コンテンツ プロジェクト タイプは、ネストされたコンパイル プロセスとしてゲーム コンテンツ (テクスチャ、サウンドなど) をコンパイルするだけの標準 XNA プロジェクトのサブプロジェクトですよね?
したがって、プロジェクト ファイルまたはソリューション ファイルのいずれかにサブプロジェクトへの参照が必要であると想定します。おそらく、C# または VB で単純な XMA プロジェクトを作成し、生成されたメタ ファイルを確認するのが最善の方法です ( csproj、contentproj など)
編集:
ああ、ここで contentproj ファイルを手動で作成して参照を挿入することをお勧めします。それらがどのように見えるかがわかったら、VS でコンテンツの追加、削除などを行うことができると思います。
それから、XNA コンテンツ パイプラインのコンパイル プロセスがどのように開始されるかという問題が残ります。
これが少し役立つことを願っています、それは単なる推測です。
ところで、StackOverFlow でお会いできてうれしいです。
Rgdsティムジャービス.
私の知る限り、Prism は発表されただけでリリースされていません。したがって、トライアルは最終製品ではありません。RO の顧客として、私は電子メールがリリースされることを期待していますが、それが発表されるまではそうではありません。率直に言って、XNA のサポートが確定したか、まだ機能しているのかさえわかりません。Prism の公式リリースが早くても 1 か月近く先であることを考えると、これを試すのは時期尚早かもしれません。
XNA に関する問題を解決するために何をすべきかわかりませんが、Prism 自体を待つのが賢明でしょう。Prism がリリースされるまで、XNA のサポートは「保留中」と考えます。
System.reflection を使用して XNA の内部構造にアクセスし、xnb ファイルを作成できます
method Game1.LoadContent;
var
importer : TextureImporter;
texContent : Texture2DContent;
cc : ContentCompiler;
fullPath : String;
fs : FileStream;
args : array[1..7] of System.Object;
begin
spriteBatch := new SpriteBatch(GraphicsDevice);
importer := new TextureImporter;
texContent := importer.Import(’asset.png’, nil) as Texture2DContent;
var compilerType := typeOf(ContentCompiler);
cc := compilerType.GetConstructors(BindingFlags.NonPublic or BindingFlags.Instance)[0].Invoke(nil) as ContentCompiler;
var compileMethod := compilerType.GetMethod("Compile", BindingFlags.NonPublic or BindingFlags.Instance);
fullPath := ‘assestName.xnb’;
fs := File.Create(fullPath);
args[1] := fs;
args[2] := texContent;
args[3] := TargetPlatform.Windows;
args[4] := GraphicsProfile.Reach;
args[5] := true;
args[6] := fullPath;
args[7] := fullPath;
compileMethod.Invoke
(
cc,
args
);
//SpriteTexture := Content.Load(’assetName’);
end;