龍神録2はゲームをスタートするとまず東方ライクなタイトル画面が表示されます。
その中に龍神録2は「ストーリー」という項目があります。
「ストーリー」を選んだら「ストーリー選択画面」に遷移します。そこで対象のストーリーを選んだらその「ストーリー」の画面になります。
ストーリーを見終わったら、そのストーリーに選択項目フォーカスがあたった状態で復帰します。
上記図で言うと「ステージ4」にフォーカスがあたった状態で画面復帰しないといけないわけです。
で、さらに元の画面に戻るとタイトル画面では「ストーリー」に選択フォーカスがあたった状態にしておかなければなりません。
もし各画面の選択状態やステータスを全て管理クラスが覚えておかないといけない
復帰するときに再設定しないといけないような設計にしようと思うとこれは管理クラスが大変です。
そこで便利な設計方法の紹介です。
各画面は「Scene(シーン)」クラスとして管理します。
全ての画面はScene抽象クラスを継承して実装します。
先ほどのタイトル画面はGemeTitleSceneとでもして継承しましょう。
StorySelectSceneとStorySceneを各画面に対応させます。
SceneManagerさんがこのインスタンスを「スタックとして」保持します。
ここがポイントです。
各画面をスタックを使って積み重ねていくのです。
現在処理するのは一番上に来ているTopだけ。
Topに->update()してやるだけでよく、元の画面に戻りたければTopをpopすればいいのです。
自動的にTopだけを->update()する仕組みですから、前の画面が前の状態で復帰します。
画面を奥に入るときは新しくそのシーンをnewしてstackにpushします。
前の画面に戻りたければpopします。
重ねますが、update処理をするのは常にStackのTopだけです。
こうすることでステータスを誰かが管理する必要がなく、
前の状態のまま復帰することができるようになるのです。
メニュー画面の設計方法 [四聖龍神録2公式Twitter]
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
メニュー画面の設計方法 [四聖龍神録2公式Twitter]
最後に編集したユーザー Dixq (管理人) on 2016年3月11日(金) 23:19 [ 編集 1 回目 ]
Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]
上級過ぎて分かんないわ(´・ω・`)
全部覚えさせたほうが分かりやすいっちゃ分かりやすい気がしないこともない(´・ω・`)
全部覚えさせたほうが分かりやすいっちゃ分かりやすい気がしないこともない(´・ω・`)
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]
> 夢幻ノ月夜君
多分一回大変な思いをすると全部覚えさせて管理クラスが全部の仕事するような設計は大変だと理解すると思うよ。
大規模な設計になるほど安直に設計すると管理クラスが大変になる。
そこでなるべく管理クラスが仕事しなくても動くような設計をするようになるわけだね。
多分一回大変な思いをすると全部覚えさせて管理クラスが全部の仕事するような設計は大変だと理解すると思うよ。
大規模な設計になるほど安直に設計すると管理クラスが大変になる。
そこでなるべく管理クラスが仕事しなくても動くような設計をするようになるわけだね。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]
> amehiruneさん
さも業界で一般的な手法かのように書いていますが、業界のことは全然しりません。私が試行錯誤して編み出した我流なので、適当に聞いといてください(^_^;)
設計が大規模になればなるほど、なるべく管理クラスが楽できる設計を考えていくもんですね。
さも業界で一般的な手法かのように書いていますが、業界のことは全然しりません。私が試行錯誤して編み出した我流なので、適当に聞いといてください(^_^;)
設計が大規模になればなるほど、なるべく管理クラスが楽できる設計を考えていくもんですね。
Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]
プログラミングでスタック、といえばLUAスクリプトを思い出す。それに似たようなものなのかな?
Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]
いわゆるシーン履歴ですな。
現場でシーン管理の仕組み作るときはやってます。
現在のシーン画面を残しながら新たなシーンを上階層に作れるようにシーンが管理する子シーン、兄弟シーンも作れるようにしたプロジェクトなんかもありました。
現場でシーン管理の仕組み作るときはやってます。
現在のシーン画面を残しながら新たなシーンを上階層に作れるようにシーンが管理する子シーン、兄弟シーンも作れるようにしたプロジェクトなんかもありました。