合計 昨日 今日

アバター
Dixq (管理人)
管理人
 
記事: 1543
登録日時: 2010年10月12日(火) 20:16
お住まい: 北海道札幌市
日記: 日記を見る (567)
日記
- 11月 2017
アンパンマンとバナナ (3)
   2017年11月16日(木) 23:28

+ 10月 2017
+ 9月 2017
+ 8月 2017
+ 7月 2017
+ 6月 2017
+ 5月 2017
+ 4月 2017
+ 3月 2017
+ 2月 2017
+ 1月 2017
+ 12月 2016
+ 11月 2016
+ 10月 2016
+ 9月 2016
+ 8月 2016
+ 7月 2016
+ 6月 2016
+ 5月 2016
+ 4月 2016
+ 3月 2016
+ 2月 2016
+ 1月 2016
+ 12月 2015
+ 11月 2015
+ 10月 2015
+ 9月 2015
+ 8月 2015
+ 7月 2015
+ 6月 2015
+ 5月 2015
+ 4月 2015
+ 3月 2015
+ 2月 2015
+ 1月 2015
+ 12月 2014
+ 11月 2014
+ 10月 2014
+ 9月 2014
+ 8月 2014
+ 7月 2014
+ 6月 2014
+ 5月 2014
+ 4月 2014
+ 3月 2014
+ 2月 2014
+ 1月 2014
+ 12月 2013
+ 11月 2013
+ 10月 2013
+ 9月 2013
+ 8月 2013
+ 7月 2013
+ 6月 2013
+ 5月 2013
+ 4月 2013
+ 3月 2013
+ 2月 2013
+ 1月 2013
+ 12月 2012
+ 11月 2012
+ 10月 2012
+ 9月 2012
+ 8月 2012
+ 7月 2012
+ 6月 2012
+ 5月 2012
+ 4月 2012
+ 3月 2012
+ 2月 2012
+ 1月 2012
+ 12月 2011
+ 11月 2011
+ 10月 2011
+ 9月 2011
+ 8月 2011
+ 7月 2011
+ 6月 2011
+ 5月 2011
+ 4月 2011
+ 3月 2011
+ 2月 2011
+ 1月 2011
+ 12月 2010
+ 11月 2010
+ 10月 2010
フォロー
カテゴリー
日常
1 記事

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

パーマリンクby Dixq (管理人) on 2016年3月11日(金) 19:43

龍神録2はゲームをスタートするとまず東方ライクなタイトル画面が表示されます。
その中に龍神録2は「ストーリー」という項目があります。
00.png
00.png (15.56 KB) 表示数: 807 回

「ストーリー」を選んだら「ストーリー選択画面」に遷移します。そこで対象のストーリーを選んだらその「ストーリー」の画面になります。
ストーリーを見終わったら、そのストーリーに選択項目フォーカスがあたった状態で復帰します。
上記図で言うと「ステージ4」にフォーカスがあたった状態で画面復帰しないといけないわけです。
で、さらに元の画面に戻るとタイトル画面では「ストーリー」に選択フォーカスがあたった状態にしておかなければなりません。

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

各画面は「Scene(シーン)」クラスとして管理します。
全ての画面はScene抽象クラスを継承して実装します。
02.png
02.png (8.39 KB) 表示数: 808 回

先ほどのタイトル画面はGemeTitleSceneとでもして継承しましょう。
StorySelectSceneとStorySceneを各画面に対応させます。
SceneManagerさんがこのインスタンスを「スタックとして」保持します。
ここがポイントです。
01.png
01.png (26.26 KB) 表示数: 805 回

各画面をスタックを使って積み重ねていくのです。
現在処理するのは一番上に来ているTopだけ。
Topに->update()してやるだけでよく、元の画面に戻りたければTopをpopすればいいのです。
自動的にTopだけを->update()する仕組みですから、前の画面が前の状態で復帰します。
画面を奥に入るときは新しくそのシーンをnewしてstackにpushします。
前の画面に戻りたければpopします。
重ねますが、update処理をするのは常にStackのTopだけです。
こうすることでステータスを誰かが管理する必要がなく、
前の状態のまま復帰することができるようになるのです。
添付ファイル
最後に編集したユーザー Dixq (管理人) [ 2016年3月11日(金) 23:19 ], 累計 1 回

コメント数: 6 閲覧数: 11552
コメント

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

パーマリンクby 夢幻ノ月夜 on 2016年3月12日(土) 20:23

上級過ぎて分かんないわ(´・ω・`)
全部覚えさせたほうが分かりやすいっちゃ分かりやすい気がしないこともない(´・ω・`)
音ゲーにハマってしまった
もう俺は戻れない
アバター
夢幻ノ月夜
 
記事: 131
登録日時: 2015年1月23日(金) 20:54
お住まい: Stens;Gate世界線
日記: 日記を見る (38)

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

パーマリンクby amehirune on 2016年3月12日(土) 20:54

なるほど、面白い。
スタックの発想はなかったです!
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
アバター
amehirune
 
記事: 179
登録日時: 2013年11月21日(木) 17:56
お住まい: どっか
日記: 日記を見る (24)

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

パーマリンクby Dixq (管理人) on 2016年3月12日(土) 23:52

> 夢幻ノ月夜君

多分一回大変な思いをすると全部覚えさせて管理クラスが全部の仕事するような設計は大変だと理解すると思うよ。
大規模な設計になるほど安直に設計すると管理クラスが大変になる。
そこでなるべく管理クラスが仕事しなくても動くような設計をするようになるわけだね。
アバター
Dixq (管理人)
管理人
 
記事: 1543
登録日時: 2010年10月12日(火) 20:16
お住まい: 北海道札幌市
日記: 日記を見る (567)

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

パーマリンクby Dixq (管理人) on 2016年3月12日(土) 23:53

> amehiruneさん

さも業界で一般的な手法かのように書いていますが、業界のことは全然しりません。私が試行錯誤して編み出した我流なので、適当に聞いといてください(^_^;)
設計が大規模になればなるほど、なるべく管理クラスが楽できる設計を考えていくもんですね。
アバター
Dixq (管理人)
管理人
 
記事: 1543
登録日時: 2010年10月12日(火) 20:16
お住まい: 北海道札幌市
日記: 日記を見る (567)

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

パーマリンクby Nao on 2016年3月13日(日) 00:52

プログラミングでスタック、といえばLUAスクリプトを思い出す。それに似たようなものなのかな?
アバター
Nao
 
記事: 24
登録日時: 2013年6月02日(日) 02:40
日記: 日記を見る (35)

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

パーマリンクby せんちゃ on 2016年3月13日(日) 22:02

いわゆるシーン履歴ですな。
現場でシーン管理の仕組み作るときはやってます。
現在のシーン画面を残しながら新たなシーンを上階層に作れるようにシーンが管理する子シーン、兄弟シーンも作れるようにしたプロジェクトなんかもありました。
ヽ(*゚д゚)ノ カイバー
アバター
せんちゃ
 
記事: 50
登録日時: 2010年10月16日(土) 11:00
お住まい: 江別市東野幌町
日記: 日記を見る (230)

オンラインデータ

登録ユーザー: みけCAT