よくある質問 (FAQ) 〜てやんでい編〜

おう! Mononotonka の使い方で迷っちまったかい?
ここじゃあ、よくある質問に江戸っ子口調でバシッと答えさせてもらうぜ!

基本・全般 (General)

Q. Ton.Instance.graTon.Gra、どっちを使えばいいんでい!

A. Ton.Gra に決まってんだろ!
短けぇことはいいことだ! Ton.Instance なんて長ったらしいもんいちいち書いてられっか! staticプロパティのショートカットを用意してあるんだから、ありがたく使いな!

Q. Initialize を呼び忘れたらどうなるんでい?

A. 動くわけねえだろ!
Game1.Initialize の中で Ton.Initialize を呼ぶのは基本中の基本よ! これを忘れちゃあ、お天道様の下歩けねぇぜ!

グラフィックス (Graphics)

Q. テクスチャの読み込み (LoadTexture) はどこでやりゃあいい? Initializeか? LoadContentか?

A. 使いたい時に使いな!
うちは「ゆるふわキャッシュシステム」採用してんだ。事前のロードなんて野暮なことは言いっこなしだ。描画の直前でもどこでも、Ton.Gra.LoadTexture を呼びな! 既に読んでありゃキャッシュから返すし、なけりゃその場で読んでやるよ!まぁ、各シーンでしか使わねぇやつは各シーンのInitialize()で、どこでも使うやつはGame1のLoadContent()で読んどけば間違いねぇな。

Q. 画像を読み込みすぎてメモリが溢れちまわねぇか心配だ…

A. びくびくすんじゃねえ!
使わなくなった画像は、キャッシュシステムが勝手に片付け(Unload)てやるよ!
どうしても心配なら、Ton.Gra.MaxTextureMemory で使用量をチェックしな! それでも溢れるようなら、UnloadTexture で手動で消すなり、キャッシュのタイムアウト時間を調整するなり工夫しやがれ!

Q. 画面にフィルターかけたいんだが、どうすりゃいい?

A. Ton.Gra.SetScreenFilter を使いな!
セピアだのモノクロだの、洒落た真似もお手の物よ。指定したターゲットだけにかけたりもできるから、ド派手に演出してみな!
複数のフィルタを同時にかける場合は、Ton.Gra.AddScreenFilter を使って追加してやりな!
フィルタが不要になったら、Ton.Gra.ClearScreenFilter を使って消すんだよ!

Q. 画像を回転させたり拡大縮小して描画してぇんだ!

A. Ton.Gra.DrawEx を使いな!
ただの Draw じゃ満足できねぇってか? 贅沢な奴だな!
DrawEx なら回転角度(ラジアン)も拡縮率も思いのままだ。中心座標を基準にグルグル回してやりな!

Q. 文字を表示したいんだが、どのフォントがありやがる?

A. 自分で探してこい!文句あっか!
ライセンスとかあるからGoogle Fontsとかで自分で探してきて、読み込ませな! その辺で発売しているフォントは、ゲーム開発用のライセンスが厳しいものが多いから注意な! フォントをPCにインストールして、Fontフォルダにある.spritefontファイルのFontNameを改変して、MGCB Editorで登録しな!

Q. カスタマイズしたSpritefontファイルを作りたいんだが

A. 自分で作ってこい!文句あっか!
これとか使ってな!!
ソースもあるぜ、自分で作ってみな!

Q. ドット絵がボヤけちまうんだが!?

A. SetAntiAliasing(false) を呼びな!
デフォルトじゃ滑らかにするためにアンチエイリアスがかかってらぁ。
パキッとしたドット絵を見せてぇなら、Initializeのあたりで「アンチエイリアスは結構です」って断りを入れときな!

Q. 描画順序 (Z-order) はどうなってんでい?

A. 書いた順に決まってんだろ!
うちの SpriteBatchDeferred モードだ。先に書いたもんが奥、後に書いたもんが手前だ。
背景を先に描いて、キャラを後に描く。そんな当たり前のことをきっちりやりな!

Q. 加算合成(光るエフェクト)とかしてぇんだが。

A. SetBlendState で切り替えな!
TonBlendState.Additive をセットすりゃあ、ピカッと光るぜ!
描き終わったら TonBlendState.AlphaBlend に戻すのを忘れんじゃねえぞ! つけっぱなしだと画面が真っ白になっちまうからな!

Q. DrawBackground ってのは何者だ?

A. 画面いっぱいに描くための助っ人よ!
一枚絵を背景にしたい時、アスペクト比を維持したまま画面を埋めるように拡大縮小して描画してやる便利な関数だ。
隙間ができないようにちょいと大きめに描いてやるから、細かいことは気にせず任せな!

Q. 画像が見つからねぇとピンク色の四角が出やがる!

A. そりゃあ「エラー」の印だ!
指定したファイルパスが間違ってるか、Contentに追加し忘れてる証拠だ!
ゲームを落とさねぇように代わりにマゼンタの四角を出してやってるんだ、感謝しな! ログにエラーが出てるはずだから、血眼になって探しな!

Q. 画面全体を揺らしてぇんだが!

A. Ton.Gra.Shake で一発よ!
ダメージ受けた時とかに使いな。時間と強さを指定すりゃ、画面全体をガタガタ揺らしてやるぜ。
「地震だ!」ってなもんよ。

Q. MGCB Editorってのは何だ? 使い方がさっぱりわからねぇ!

A. 商売道具の手入れもできねぇのか!
MonoGameで画像や音を使うには、これで「登録」して「ビルド」しなきゃならねぇ。
Visual Studioのソリューションエクスプローラーにある、拡張子が .mgcb のファイルをダブルクリックすれば立ち上がるはずだ。
そこで使いたいファイルをAddして、ビルドボタンを押しな!
これをやらねぇと、ロードした時にピンク色の四角が出たり、音が鳴らなかったりするぜ!

プリミティブ描画 (Primitive)

Q. 画像を使わずに図形を描きてぇんだ!

A. Ton.Primitive を使いな!
円でも四角でも稲妻でも、テクスチャなしで描き放題だ!

Q. 稲妻 (DrawBolt) が動かねえぞ! どうなんてんだ!

A. updatesPerSecond を設定しな!
最後の引数が 0 だと「時が止まった」稲妻になっちまう。
ここを 60 とかにすりゃ、毎秒60回ビリビリ形が変わるようになるぜ!

Q. 図形をもっと滑らかにしてぇんだが?

A. segments を増やしな!
円や円弧を描くときの引数 segments が分割数だ。
これを増やせばツルツルになるが、増やしすぎると重くなるから程々にな!

サウンド (Sound)

Q. 音が鳴らねえぞ! どうなってやがる!

A. 下手な言い訳すんじゃねえ!
Ton.Update は毎フレーム呼んでるか? 音量(MasterVolume)がゼロになってねえか?
そこら辺が間違ってなきゃ、ファイルパスが合ってるか確認しな! 大文字小文字は気にしなくていいようにしてやってるが、ファイル自体がなきゃ音は出ねえぞ!

Q. BGMをクロスフェードさせたいんだが…

A. PlayBGM の引数を見てみな!
fadeSeconds って引数があるだろ? そこに秒数を入れれば、今の曲をフェードアウトさせながら新しい曲をフェードインさせてやるよ。粋な計らいってやつだ!

Q. パンはねぇのかよパンは

A. ねぇよ!!パンなんか食ってられるか!!

入力 (Input)

Q. キー配置を変えてぇんだが…

A. input.config をイジりな!
「決定」がZキーじゃ気に入らないって? だったら input.config ファイルを作りな! 好きなキーに割り当て放題よ!
ファイルがどこにあるのかわからない?ログに書いてあるぜ!!

Q. ゲームパッドが急に抜けちまったらどうなるんでい?

A. 慌てるんじゃねえ!
抜けた時は「GamePad Disconnected」、差した時は「GamePad Connected」ってログが出るようになってらぁ。
勝手に再認識して使えるようになるはずだから、落ち着いて差し直しな!
ちなみにゲームパッドは1つしか認識しないから、2つ以上差してても意味はねえぞ!

シーン管理 (Scene)

Q. シーン切り替えはどうやるんでい?

A. Ton.Scene.Change を使いな!
次のシーンのインスタンスを作って渡すだけだ。
フェードイン・アウトの時間も秒数で指定できる。
Ton.Scene.Change(new NextScene(), 1.0f, 1.0f) ってな具合だ。
真っ暗な中でコッソリ着替えたい時は、フェード時間を長めに取りな!

パーティクル (Particle)

Q. 派手なエフェクトを出してぇんだが!

A. Ton.Particle に任せな!
まずは Ton.Particle.Register で「どんな飛び方をするか」を登録するんだ。
速度、寿命、重力、色… こだわりの設定を作りな!
あとは Ton.Particle.Play を呼べば、登録した通りに景気よく飛び散らかしてやるぜ!

セーブ・ロード画面 (Save/Load)

Q. セーブ画面を作んのが面倒くせぇ!!

A. 楽しようとしてんじゃねえ! …と言いたいが、用意してあるぜ!!
Ton.SaveLoadMenu.Open を呼ぶだけで、立派なセーブ・ロード画面が開く寸法だ。
TonSaveLoadMode.BothDefaultSave とか指定すれば、セーブ・ロード両対応の画面になる。
Ton.SaveLoadMenu.ExecuteAutoSaveを呼び出すだけでオートセーブのスロットにセーブが行われるぜ!
データは Ton.Data の中身を丸ごと保存するから、大事なもん(変数の値とか)はそこに入れときな!
セーブ・ロード画面がしょぼいと思ったら自分でDraw()を直しな!!自分で直せるのがMononotonkaのいいところだ!!
ロード後にはTon.Data.AfterLoad()が呼ばれるぜ!ロードしたデータの後処理はそこでやるんだぜ!

メッセージ (Message)

Q. 会話用のメッセージウィンドウを作るのが面倒くせぇ!!

A. Ton.Msg があるじゃねえか!
Ton.Msg.LoadScript にスクリプトを渡せば、文字が流れるぜ!!ウィンドウは自分で描きな!!
[wait:10] で待ったり、[color:Red] で色を変えたり、タグを使えば演出も思いのままだ!

メニュー画面 (Menu)

Q. メニュー画面を作んのが面倒くせぇ!!

A. この面倒くさがりめ!!Ton.MenuTonMenuManager があるじゃねえか!
ただな、正直かなり面倒くさいぜ。サンプルコードをいじくり回した方が手っ取り早いぜ!!
自分で作ったほうがいいと思うなら、そうした方がいいぜ!!Mononotonkaのコードを直すのもありだぜ!

コンフィグ画面 (Config Menu)

Q. コンフィグ画面を作んのが面倒くせぇ!!

A. ああもうわかったわかった!Ton.ConfigMenu があるぜ!
Ton.ConfigMenu.Open を呼ぶだけで、必要最低限のコンフィグ項目を含む画面が開くぜ!
自分で作ったほうがいいと思うなら、そうした方がいいぜ!!Mononotonkaのコードを直すのもありだぜ!

ログ (Log)

Q. ログレベルとかねぇのかよ?

A. あってもどうせ使わねぇから実装してねぇぜ!

プロパティ (Property)

Q. クラスのプロパティがあるのにマニュアルに記載してねぇぞ!!

A. 基本的にユーザーには関数を利用してもらう設計だぜ!
勝手にプロパティを使うのは全然かまわねぇぜ!!

その他 (etc.)

Q. 要望あるんだが

A. バグは教えてくれよな!!それ以外は自分でフォークして作ってくれよな!!

Q. タイルマップ対応してねぇのかよ!

A. 対応したいんだけど、タイルマップ対応したら次はアレじゃん、次はアレじゃん、ってなるじゃん?
マルチレイヤー対応、イベント対応、当たり判定、敵キャラ対応、キャラクターデータ管理、どこまでやるねんってなるじゃん?
対応するかもしれないけど、いつになるかはわからねぇぜ!やっても中途半端になるかもな!

トップへ戻る