「MonoGameで外部のXNBファイルを読み込む」の版間の差分
imported>Administrator 編集の要約なし |
|||
| (2人の利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
[[MonoGame]]で作っている[[ゲーム]]に起動時データ更新を実装し、[[プログラム]]以外の画像や音楽などだけであれば自動更新するようにしたいわけだ。 | [[MonoGame]]で作っている[[ゲーム]]に起動時データ更新を実装し、[[プログラム]]以外の画像や音楽などだけであれば自動更新するようにしたいわけだ。[[スマホ]]の[[ゲーム]]によくあるアレである。むしろ[[プログラム]]の細かい部分も[[NeoLua]]に投げるようにしてしまいたい。 | ||
そうなると外部から各種[[データ]] | そうなると外部から各種[[データ]]を読み込む必要が出てくる。しかし[[MonoGame]]で扱う各種[[データ]]の基本は[[プログラム]]に組み込まれた「Content」である。 | ||
==Xamarin.Android== | == Xamarin.Android == | ||
[[MonoGame]] | [[MonoGame]]の[[ソースコード]]をざっと見た感じ、[[Xamarin.Android]]ではContentManagerクラスでアセット以外の[[ファイル]]へはアクセスできないようだ。ContentManagerクラスの[[ソースコード]]をみると幸いにもvirtualやらがチラホラ見受けられ継承してoverrideする前提の構造になっている。なので細かいことは考えずにoverrideしてしまえと考えた。 | ||
ついでに各種パラメータを保存した[[csv]]や[[json]]などのxnb以外の[[ファイル]]も同様の手順で読み込めるように、xnbパーサを経由しない裏口も用意すると捗った。 | ついでに各種パラメータを保存した[[csv]]や[[json]]などのxnb以外の[[ファイル]]も同様の手順で読み込めるように、xnbパーサを経由しない裏口も用意すると捗った。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
| 89行目: | 84行目: | ||
使い方は普通のContentManagerと大して変わらない。 | 使い方は普通のContentManagerと大して変わらない。 | ||
<source> | <source lang="csharp"> | ||
// Androidであれば「/data/data/アプリID/files」あたりが返ってくるはず。 | // Androidであれば「/data/data/アプリID/files」あたりが返ってくるはず。 | ||
var | var rootdir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); | ||
var cm = new ExternalContentManager(this.Content.ServiceProvider, | var cm = new ExternalContentManager(this.Content.ServiceProvider, rootdir); | ||
var font = cm.Load<SpriteFont>("IPA-Gothic"); | var font = cm.Load<SpriteFont>("IPA-Gothic"); | ||
</source> | </source> | ||
==関連項目== | == 関連項目 == | ||
*[[ | * [[MacOS版のMonoGameのPipeline.appで3Dモデルをビルドできない]] | ||
* [[MonoGameで使う3DモデルをFusion360で作成する]] | |||
* [[MonoGameのカメラを作る]] | |||
[[category:MonoGame]] | [[category:MonoGame]] | ||
[[category:Xamarin.Android]] | [[category:Xamarin.Android]] | ||