「MonoGameで外部のXNBファイルを読み込む」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | [[MonoGame]]で作っている[[ゲーム]]に起動時データ更新を実装し、[[プログラム]]以外の画像や音楽などだけであれば自動更新するようにしたいわけだ。 | + | [[MonoGame]]で作っている[[ゲーム]]に起動時データ更新を実装し、[[プログラム]]以外の画像や音楽などだけであれば自動更新するようにしたいわけだ。 |
+ | むしろ[[プログラム]]の細かい部分も[[NLua]]に投げるようにしてしまいたい。 | ||
− | そうなると外部から各種[[データ]] | + | そうなると外部から各種[[データ]]を読み込む必要が出てくる。 |
+ | しかしMonoGameで扱う各種データの基本はプログラムに組み込まれた「Content」である。 | ||
− | == Xamarin.Android == | + | ==Xamarin.Android== |
− | [[MonoGame]] | + | [[MonoGame]]のContentManagerクラスの[[ソースコード]]をざっと見た感じ、[[Xamarin.Android]]ではアセット以外の[[ファイル]]へはアクセスできないようだ。 |
+ | ContentManagerクラスの[[ソースコード]]をみると幸いにもvirtualやらがチラホラ見受けられ継承してoverrideする前提の構造になっている。 | ||
+ | なので細かいことは考えずにoverrideしてしまえ。 | ||
ついでに各種パラメータを保存した[[csv]]や[[json]]などのxnb以外の[[ファイル]]も同様の手順で読み込めるように、xnbパーサを経由しない裏口も用意すると捗った。 | ついでに各種パラメータを保存した[[csv]]や[[json]]などのxnb以外の[[ファイル]]も同様の手順で読み込めるように、xnbパーサを経由しない裏口も用意すると捗った。 | ||
+ | 個人的な主な用途としては、[[OpenGL ES]]の[[バーテックスシェーダー]]は書き込みだけで読み出せないため、[[モデル]]とは別に頂点データのcsvファイルを読み込み、それを当たり判定に用いている。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
84行目: | 89行目: | ||
使い方は普通のContentManagerと大して変わらない。 | 使い方は普通のContentManagerと大して変わらない。 | ||
− | <source | + | <source> |
// Androidであれば「/data/data/アプリID/files」あたりが返ってくるはず。 | // Androidであれば「/data/data/アプリID/files」あたりが返ってくるはず。 | ||
− | var | + | var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); |
− | var cm = new ExternalContentManager(this.Content.ServiceProvider, | + | var cm = new ExternalContentManager(this.Content.ServiceProvider, path); |
var font = cm.Load<SpriteFont>("IPA-Gothic"); | var font = cm.Load<SpriteFont>("IPA-Gothic"); | ||
</source> | </source> | ||
− | == 関連項目 == | + | ==関連項目== |
− | * [[ | + | *[[MonoGame]] |
− | |||
− | |||
[[category:MonoGame]] | [[category:MonoGame]] | ||
[[category:Xamarin.Android]] | [[category:Xamarin.Android]] |