Unity DebugManager(β版)
DebugManagerのβ版を作成した。
目的
ゲーム画面からセーブデータやシーン移動処理をダイレクトに行えるようにする。
β版の機能について
- セーブデータ:bool値のみ編集可能
- シーン移動処理:移動するだけ
完成版
- セーブデータ:bool, int, float, string値編集可能、削除機能
- シーン移動処理:指定した座標にプレイヤーキャラクターを配置させる
- エクセルデータ:セーブデータの数値の範囲指定と初期値、シーン名設定を行う
初期状態
機能説明
- 左上のデバックボタンを押すと表示される(もう一度押すと非表示になる)
- 外部のスクリプトから生成される。
- シングルトン化され、一つのみ生成される
- Debug.isDebugBuild == trueの時にしか生成されない
セーブデータ編集画面
機能説明
- セーブデータをゲーム中に画面からリアルタイムに編集できる
- セーブデータの項目ごとに分けることができ、切り替えができる
- フラグをチェックするとデータが書きかわる。
- 数が多くなった場合、スクロールができる
シーン移動画面
機能説明
- シーンの移動をゲーム中に画面からリアルタイムにできる
- シーンのまとまりを作ることができ、切り替えができる
- シーン名を押すとシーンを移動する。
- 数が多くなった場合、スクロールができる
階層構造&キャンバス構成
LayOut
Vertical Layout Groupを利用し、縦に配置をおこなう。
Unity - マニュアル: Vertical Layout Group
「Tag」
「count」
「BottomScroll」
を配置
Layout Elementで各項目の配置する幅を変更する。
Unity - マニュアル: Layout Element
SelectTag
ボタンを押すとステイトとスクロールバーが更新される
終了ボタンとタグがセットになっているオブジェクト
hoizonal layoutを利用する。
Unity - マニュアル: Horizontal Layout Group
SelectTagに付け以下のように分ける。
{CloseButton}{Select}
さらに、Selectに付け以下のように分けている
{CloseButton}{ [Flage] [Map] }
Select以下にオブジェクトを追加した順番に左から順に追加される。
ボタン
Flage,Mapに配置しボタンを押されたことをDebugSelectTag.csにコールバックする。
Count
現在のタブで設定されている名前が出る(+,-ボタンでリスト切り替え)
hoizonal layoutを利用し、(-)(+)ボタンを押すとDebugCount.csにコールバックする。
BottomScroll
項目数が増えるとスクロールできる
スクロールできるように
ScrollRect
Unity - マニュアル: Scroll Rect
スクロールの範囲外を表示させないために
Mask、Image
Unity - マニュアル: Mask
縦にだけスクロール移動できるようにする。
SelectTagとcountのパラメータによってContentの中身を入れ替えられるようにスクリプトを書く
SaveData、MapMoveによって利用するプレハブを変更する
プレハブの中にはGridLayoutGroupとContentSizeFitterがアタッチされている
(スクロールさせるため)
Unity - マニュアル: Content Size Fitter
Unity - マニュアル: Grid Layout Group
上から表示したので、Pivotを(x:0.5, y:1)にする
ContentSizeFitterのVerticalFitをPreferred sizeに変更する。
ゲーム中にトグルにチェックを入れるかどうかでセーブデータを書き換える処理を行うスクリプトをアタッチしておく。
今回は、GridLayoutGroupで大きさの設定をしているので、一つ一つのトグルオブジェクトに
LayoutElementはアタッチしていない。
Unity - マニュアル: Layout Element
スクリプト
- GameStart.cs:外部からDebugManagerを生成する
- DebugOpenAndClose.cs:DebugManagerをボタンの切り替えで表示、非表示にする
- DebugLayOut.cs:タブ、リスト、スクロールバーの管理
- DebugSelectTag.cs:タブの選択
- DebugCount.cs:リストの切り替え
- DebugButtomScroll.cs:ボタンの生成、ボタンのスクロール
- DebugCreateNode.cs:スクロールバー内のリスト作成
- DebugKey.cs:生成するnodeの個数と名前の設定
- DebugListData.cs:各スクロールバーに表示するためのnodeリスト作成
- DebugSceneMove.cs:シーン移動用のnode作成
- 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