メニュー画面の設計方法 [四聖龍神録2公式Twitter]

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

メニュー画面の設計方法 [四聖龍神録2公式Twitter]

投稿記事 by Dixq (管理人) » 9年前

龍神録2はゲームをスタートするとまず東方ライクなタイトル画面が表示されます。
その中に龍神録2は「ストーリー」という項目があります。
00.png
00.png (15.56 KiB) 閲覧数: 844 回
「ストーリー」を選んだら「ストーリー選択画面」に遷移します。そこで対象のストーリーを選んだらその「ストーリー」の画面になります。
ストーリーを見終わったら、そのストーリーに選択項目フォーカスがあたった状態で復帰します。
上記図で言うと「ステージ4」にフォーカスがあたった状態で画面復帰しないといけないわけです。
で、さらに元の画面に戻るとタイトル画面では「ストーリー」に選択フォーカスがあたった状態にしておかなければなりません。

もし各画面の選択状態やステータスを全て管理クラスが覚えておかないといけない
復帰するときに再設定しないといけないような設計にしようと思うとこれは管理クラスが大変です。
そこで便利な設計方法の紹介です。

各画面は「Scene(シーン)」クラスとして管理します。
全ての画面はScene抽象クラスを継承して実装します。
02.png
02.png (8.39 KiB) 閲覧数: 842 回
先ほどのタイトル画面はGemeTitleSceneとでもして継承しましょう。
StorySelectSceneとStorySceneを各画面に対応させます。
SceneManagerさんがこのインスタンスを「スタックとして」保持します。
ここがポイントです。
01.png
01.png (26.26 KiB) 閲覧数: 876 回
各画面をスタックを使って積み重ねていくのです。
現在処理するのは一番上に来ているTopだけ。
Topに->update()してやるだけでよく、元の画面に戻りたければTopをpopすればいいのです。
自動的にTopだけを->update()する仕組みですから、前の画面が前の状態で復帰します。
画面を奥に入るときは新しくそのシーンをnewしてstackにpushします。
前の画面に戻りたければpopします。
重ねますが、update処理をするのは常にStackのTopだけです。
こうすることでステータスを誰かが管理する必要がなく、
前の状態のまま復帰することができるようになるのです。
最後に編集したユーザー Dixq (管理人) on 2016年3月11日(金) 23:19 [ 編集 1 回目 ]

アバター
夢幻ノ月夜
記事: 143
登録日時: 10年前

Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]

投稿記事 by 夢幻ノ月夜 » 9年前

上級過ぎて分かんないわ(´・ω・`)
全部覚えさせたほうが分かりやすいっちゃ分かりやすい気がしないこともない(´・ω・`)

アバター
amehirune
記事: 181
登録日時: 11年前

Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]

投稿記事 by amehirune » 9年前

なるほど、面白い。
スタックの発想はなかったです!

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]

投稿記事 by Dixq (管理人) » 9年前

> 夢幻ノ月夜君

多分一回大変な思いをすると全部覚えさせて管理クラスが全部の仕事するような設計は大変だと理解すると思うよ。
大規模な設計になるほど安直に設計すると管理クラスが大変になる。
そこでなるべく管理クラスが仕事しなくても動くような設計をするようになるわけだね。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]

投稿記事 by Dixq (管理人) » 9年前

> amehiruneさん

さも業界で一般的な手法かのように書いていますが、業界のことは全然しりません。私が試行錯誤して編み出した我流なので、適当に聞いといてください(^_^;)
設計が大規模になればなるほど、なるべく管理クラスが楽できる設計を考えていくもんですね。

アバター
Nao
記事: 24
登録日時: 12年前

Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]

投稿記事 by Nao » 9年前

プログラミングでスタック、といえばLUAスクリプトを思い出す。それに似たようなものなのかな?

アバター
せんちゃ
記事: 50
登録日時: 14年前

Re: メニュー画面の設計方法 [四聖龍神録2公式Twitter]

投稿記事 by せんちゃ » 9年前

いわゆるシーン履歴ですな。
現場でシーン管理の仕組み作るときはやってます。
現在のシーン画面を残しながら新たなシーンを上階層に作れるようにシーンが管理する子シーン、兄弟シーンも作れるようにしたプロジェクトなんかもありました。