「MonoGameで外部のXNBファイルを読み込む」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
[[MonoGame]]で作っている[[ゲーム]]に起動時データ更新を実装し、[[プログラム]]以外の画像や音楽などだけであれば自動更新するようにしたいわけだ。[[スマホ]]の[[ゲーム]]によくあるアレである。むしろ[[プログラム]]の細かい部分も[[NeoLua]]に投げるようにしてしまいたい。
+
[[MonoGame]]で作っている[[ゲーム]]に起動時データ更新を実装し、[[プログラム]]以外の画像や音楽などだけであれば自動更新するようにしたいわけだ。
 +
むしろ[[プログラム]]の細かい部分も[[NLua]]に投げるようにしてしまいたい。
  
そうなると外部から各種[[データ]]を読み込む必要が出てくる。しかし[[MonoGame]]で扱う各種[[データ]]の基本は[[プログラム]]に組み込まれた「Content」である。
+
そうなると外部から各種[[データ]]を読み込む必要が出てくる。
 +
しかしMonoGameで扱う各種データの基本はプログラムに組み込まれた「Content」である。
  
== Xamarin.Android ==
+
==Xamarin.Android==
[[MonoGame]][[ソースコード]]をざっと見た感じ、[[Xamarin.Android]]ではContentManagerクラスでアセット以外の[[ファイル]]へはアクセスできないようだ。ContentManagerクラスの[[ソースコード]]をみると幸いにもvirtualやらがチラホラ見受けられ継承してoverrideする前提の構造になっている。なので細かいことは考えずにoverrideしてしまえと考えた。
+
[[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 lang="csharp">
+
<source>
 
// Androidであれば「/data/data/アプリID/files」あたりが返ってくるはず。
 
// Androidであれば「/data/data/アプリID/files」あたりが返ってくるはず。
var rootdir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
+
var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var cm = new ExternalContentManager(this.Content.ServiceProvider, rootdir);
+
var cm = new ExternalContentManager(this.Content.ServiceProvider, path);
 
var font = cm.Load<SpriteFont>("IPA-Gothic");
 
var font = cm.Load<SpriteFont>("IPA-Gothic");
 
</source>
 
</source>
  
== 関連項目 ==
+
==関連項目==
* [[MacOS版のMonoGameのPipeline.appで3Dモデルをビルドできない]]
+
*[[MonoGame]]
* [[MonoGameで使う3DモデルをFusion360で作成する]]
 
* [[MonoGameのカメラを作る]]
 
  
 
[[category:MonoGame]]
 
[[category:MonoGame]]
 
[[category:Xamarin.Android]]
 
[[category:Xamarin.Android]]

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)