Unityと吉里吉里でSLGとかRPGを作るブログ

ターン処理も終ったんで、次はウィンドウ処理関連。
ゲームにもよるだろうけど、開いたウィンドウは右クリックで閉じられるのがほぼ常識となっている。
特に大量にウィンドウを表示するゲームの場合、この機能の有無がゲームの良し悪しに直結する。

今回は、開いたウィンドウを右クリックで閉じる制御を作りこんでいく。


///ウィンドウ制御の設計
もし、ウィンドウが1画面に1、2つしか開かないなら、制御と呼べる物は必要ない。
何故なら開いてるウィンドウを閉じてしまえば良いからだ。しかし、別種のウィドウやら子ウィドウやらを複数表示する様になると問題が発生する。
そこで必要な処理は以下になる。

①子ウィンドウ
 子ウィンドウを開いてる時、右クリックした場合、子ウィンドウだけを閉じる。

②閉じる順番
 複数のウィンドウがある場合、開いた順と逆に閉じていく。

③ウィンドウを開いてる時は、クリッカブルマップをロックする。

書き出してみると分るけど、必要な情報は「どのウィンドウが開いているか」と「どの順番で開いたか」。
なんで、それらを持つオブジェクトを作って、ウィンドウを制御する。
あと、このゲームの特性上、クリッカブルマップの上にウィンドウを表示するので、ウィンドウが動いてる場合はクリッカブルマップをロックする。


///オブジェクトの設計
■オブジェクト相関図
右クリック

1.ウィンドウを開いたらクリッカブルマップをロックする。
2.開いたウィンドウのIDをID配列に追加する。
3.右クリックされたら、ID配列の一番したのIDを取得して、そのウィンドウを閉じる。
4.ID配列が全部無くなったら、クリッカブルマップを解除する。

ここで1つ問題が発生する。ウィンドウってのは再表示とかを結構行う。
例えば、このゲームなら土地に建物を建てると、その建物の影響を反映する為、ウィンドウを再表示する。見た目は建物が反映されただけだけど、処理的には再度ウィンドウを表示し直してる。

こうなると、IDを複数登録してしまうかもしれない。これを防ぐ為、ID登録の際に自分と同じIDが既に登録されていたらIDを登録しない処理を追加しておく。

これで表示の為のウィンドウ表示は無視され、あくまでもユーザーが開いた順番に応じてウィンドウが閉じる。




テスト結果も乗せようと思ったが、最近画面張るのが多くなり、ちょっと時間を圧迫している。
ほぼ毎日更新なんで、1話は30分程度で出来るのが望ましい、今後も必要がなければ概念だけ載せておく事にした。

次回はいよいよユニット回りだ。

スポンサーサイト
2009.01.29 / Top↑
Secret

TrackBackURL
→http://nekodamasi.blog79.fc2.com/tb.php/19-e1c0706e