Unity DebugManager(β版)

DebugManagerのβ版を作成した。

目的

ゲーム画面からセーブデータやシーン移動処理をダイレクトに行えるようにする。

β版の機能について

  • セーブデータ:bool値のみ編集可能
  • シーン移動処理:移動するだけ

完成版

  • セーブデータ:bool, int, float, string値編集可能、削除機能
  • シーン移動処理:指定した座標にプレイヤーキャラクターを配置させる
  • エクセルデータ:セーブデータの数値の範囲指定と初期値、シーン名設定を行う

初期状態

f:id:yasuaki-ohama:20150531004049p:plain

機能説明

  • 左上のデバックボタンを押すと表示される(もう一度押すと非表示になる)
  • 外部のスクリプトから生成される。
  • シングルトン化され、一つのみ生成される
  • Debug.isDebugBuild == trueの時にしか生成されない

セーブデータ編集画面

f:id:yasuaki-ohama:20150531003539p:plain

機能説明

  • セーブデータをゲーム中に画面からリアルタイムに編集できる
  • セーブデータの項目ごとに分けることができ、切り替えができる
  • フラグをチェックするとデータが書きかわる。
  • 数が多くなった場合、スクロールができる

シーン移動画面

f:id:yasuaki-ohama:20150531003546p:plain

機能説明

  • シーンの移動をゲーム中に画面からリアルタイムにできる
  • シーンのまとまりを作ることができ、切り替えができる
  • シーン名を押すとシーンを移動する。
  • 数が多くなった場合、スクロールができる

階層構造&キャンバス構成

f:id:yasuaki-ohama:20150531003910p:plain

LayOut

f:id:yasuaki-ohama:20150531120038p:plain

Vertical Layout Groupを利用し、縦に配置をおこなう。
Unity - マニュアル: Vertical Layout Group
「Tag」
「count」
「BottomScroll」
を配置

Layout Elementで各項目の配置する幅を変更する。
Unity - マニュアル: Layout Element
f:id:yasuaki-ohama:20150531120440p:plain

SelectTag

ボタンを押すとステイトとスクロールバーが更新される
f:id:yasuaki-ohama:20150531120911p:plain
終了ボタンとタグがセットになっているオブジェクト
f:id:yasuaki-ohama:20150531120928p:plain

hoizonal layoutを利用する。
Unity - マニュアル: Horizontal Layout Group

SelectTagに付け以下のように分ける。
{CloseButton}{Select}

さらに、Selectに付け以下のように分けている
{CloseButton}{ [Flage] [Map] }

Select以下にオブジェクトを追加した順番に左から順に追加される。

ボタン

Flage,Mapに配置しボタンを押されたことをDebugSelectTag.csにコールバックする。
f:id:yasuaki-ohama:20150531121509p:plain

Count

現在のタブで設定されている名前が出る(+,-ボタンでリスト切り替え)
f:id:yasuaki-ohama:20150531121720p:plain
hoizonal layoutを利用し、(-)(+)ボタンを押すとDebugCount.csにコールバックする。

BottomScroll

項目数が増えるとスクロールできる
f:id:yasuaki-ohama:20150531122126p:plain

スクロールできるように
ScrollRect
Unity - マニュアル: Scroll Rect

スクロールの範囲外を表示させないために
Mask、Image
Unity - マニュアル: Mask

縦にだけスクロール移動できるようにする。
SelectTagとcountのパラメータによってContentの中身を入れ替えられるようにスクリプトを書く
f:id:yasuaki-ohama:20150531122214p:plain

SaveData、MapMoveによって利用するプレハブを変更する
f:id:yasuaki-ohama:20150531130306p:plain

プレハブの中にはGridLayoutGroupとContentSizeFitterがアタッチされている
(スクロールさせるため)
Unity - マニュアル: Content Size Fitter
Unity - マニュアル: Grid Layout Group

上から表示したので、Pivotを(x:0.5, y:1)にする
ContentSizeFitterのVerticalFitをPreferred sizeに変更する。
f:id:yasuaki-ohama:20150531130844p:plain

ゲーム中にトグルにチェックを入れるかどうかでセーブデータを書き換える処理を行うスクリプトをアタッチしておく。
f:id:yasuaki-ohama:20150531131233p:plain
f:id:yasuaki-ohama:20150531131244p:plain

今回は、GridLayoutGroupで大きさの設定をしているので、一つ一つのトグルオブジェクトに
LayoutElementはアタッチしていない。
Unity - マニュアル: Layout Element

スクリプト

  1. GameStart.cs:外部からDebugManagerを生成する
  2. DebugOpenAndClose.cs:DebugManagerをボタンの切り替えで表示、非表示にする
  3. DebugLayOut.cs:タブ、リスト、スクロールバーの管理
  4. DebugSelectTag.cs:タブの選択
  5. DebugCount.cs:リストの切り替え
  6. DebugButtomScroll.cs:ボタンの生成、ボタンのスクロール
  7. DebugCreateNode.cs:スクロールバー内のリスト作成
  8. DebugKey.cs:生成するnodeの個数と名前の設定
  9. DebugListData.cs:各スクロールバーに表示するためのnodeリスト作成
  10. DebugSceneMove.cs:シーン移動用のnode作成
  11. DebugToggleNode.cs:セーブデータ用のnode作成

UnityのuGUIでスクロールビューを作る - テラシュールブログ
Unity - マニュアル: Scroll Rect
Unity - マニュアル: Mask
Unity - マニュアル: Content Size Fitter
Unity - マニュアル: Horizontal Layout Group
Unity - マニュアル: Vertical Layout Group
Unity - マニュアル: Grid Layout Group
Unity - マニュアル: Layout Element