スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

管理クラス

BGM4週

 一日かけてシーン管理クラスを作成&シーンクラスの修正。

 シーンはキューで管理してあって、一番上のシーンがアクティブ状態になり処理される。
キューにないシーンをアクティブにすると、一番上に追加され、キューにある場合引っこ抜いて一番上に置く。
シーンの削除フラグをONにするとリストから消える。
1フレームの途中でキューを操作しても1フレームの処理が終わるまで切り替わらない。
 この4つの法則で管理する。感覚的にも分かり安いかな。

 キューにある場合引き抜く処理はやらなくても動くので、消す事も出来るし関数のネストを気にしないなら、管理クラスを使わない設計も出来る。

 例えば、戦闘画面からメニューを呼び出すと

-------
メニュー(アクティブ)
-------
戦闘画面
-------

 とこうなり、メニューが終了すると上がどいて、戦闘画面がアクティブになります。

------
MAP3(アクティブ)
------
MAP2
------
MAP1
------

 アクションゲームでマップがこうなっている時に、MAP1をアクティブにすると、MAP1が一番上にきます。
引き抜く処理をしない場合、スタックに延々と溜まるのを避けれる。

 ただし1フレームの間に複数のシーンをアクティブにする可能性がある場合注意が必要。

-----
STG画面
-----
インターミッション
-----
リザルト画面
-----
ポーズメニュー
-----

 ってなっている時、たまたまポーズボタンを押すと同時にクリアしてSTG画面が自身を削除すると。

-----
リザルト画面
-----
ポーズメニュー
-----
インターミッション
-----

 こうなってリザルト終了後、ポーズメニューが開く。
これを解決する場合、リザルト終了時にインターミッションを呼び出すか、クリア寸前はポーズメニューを呼べないようにするとかしましょう。
 これを利用して、次の次に呼び出すのを事前に決めるのはやりやすいとも言える。

 画面を2分割して複数のシーンを同時に動かしたい場合は親シーンが子シーンのメイン処理を呼ぶと良いはず。
そういうゲームはあんまり無いと思うので、ソースを読めないと拡張は難しい感じ。
(マリオパーティのデュエルゲームみたいなやつ)
スポンサーサイト

コメントの投稿

Secre

プロフィール

(´・@・)

Author:(´・@・)
ゲームの製作日誌です
 コメントは返事するけど、拍手コメントは返さない事があります。

メール:mr.dagonn★gmail.com
★を@に変えて下さい

twitter(更新情報をつぶやくbot)
アカウント

●公開しているゲーム
Vector作者ページ

●アンケート
FBSアンケート

TDアンケート

●バグ報告/質問/感想 掲示板
掲示板

●製作中のゲームライブラリ
SDXフレームワーク

●3DSのフレンドコード
2363-5987-4359
スマブラとかやってる

●自由ソフトウェア財団の賛助会員です
[FSF Associate Member]

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。