[スポンサードリンク]
2016-08-24 18:03:48
【MonoGame+Xamarin】MonoGamePipelineに独自ファイル形式を登録できるようにする
  1. MonoGame+Xamarin
MonoGameでMonoGamePipeline使ってる際に、素のバイナリデータもContent.Loadで読み込みたいなーとなったので、「MonoGame Content Pipeline Extension Project」を使って読み込めるようにしてみました。


VisualStudioやMonoGameのインストール等々は割愛します。
環境は「Windows10+Visual Studio Community 2015+MonoGame 3.5」

MonoGamePipeline用のDLLを作る



プロジェクトを作る





こんな感じになります。

とりあえずビルド通す


以下のように怒られるかもしれません。

「warning MSB3274: プライマリ参照 "MonoGame.Framework" は、".NETFramework,Version=v4.5" フレームワークに対して作成されているため、解決できませんでした。これは現在ターゲットされているフレームワーク ".NETFramework,Version=v4.0" よりも新しいバージョンです。」

対処としては以下です。





これでビルドは通るはず?

Importerを書く


まずは「ContentImporter1.cs」を触っていきます。

以下はプロジェクト作成時に生成されるコード。
とりあえずもうバイト配列で出力できりゃいいだろということから以下のように変えます。拡張子はdatにしときます。
「TODO」のところにインポート時にデータを修正したい場合は処理を書くようですが、なにも修正しないので、開いたファイルのバイトデータをそのまま返しますw
Importerはこれで終わり。

Processorを書く


お次は「ContentProcessor1.cs」。

以下はプロジェクト作成時に生成されるコード。
ContentPipelineのビルド時の処理ですが、ここもやはり素のバイナリデータを返すだけなのでinputされたデータをそのまま返してやります。

Processorもこれで終わり。

ビルドしてDLLを取り出す


ビルドして問題なければ以下フォルダの中に「MonoGameContentPipelineExtension1.dll」ができています。

MonoGameContentPipelineExtension1/bin/Debug/

あとで使うのでデスクトップにでもコピーしておきましょう。

MonoGamePipelineにDLLを適用してdatファイルをビルドする



適当なMonoGameプロジェクトを作成



プロジェクト名をデフォルトの「Game1」で作成したとして進めます。

ContentフォルダにDLLをコピー





こんな感じになります。

MonoGamePipelineを開いてDLLを追加する












Datファイルを登録する









Buildする



MonoGameProjectで読み込む





自分は「test.dat」が11byteだったので上記のような感じです。

Content.Loadでエラーが出る





ということで、長くなりましたが以上です。
ContentPipelineの仕組みが少しだけわかった気がします。

【関連記事】

[スポンサードリンク]
コメントする


コメント
まだコメントはありません。