[GameMaker: Studio] Depth設定は大胆に。

gms_depth_sample_1

ObjectDepthは描画の優先順位を決定するために使用されます。
(処理順序ではないことに注意してください)

数値が小さいほど優先(手前に描画)されますが、お行儀よく0、1、2…と順番に割り当てる必要はありません。
このように1ずつ増やしていくと、後で間に何か追加したいときにかなり面倒なことになってしまいます。

Depthはある程度幅を持たせて、役割に応じて割り当て範囲を決めておきましょう。

■割り当て例

0~ 99 = デバッグ表示用 200~ 399 = 汎用表示(セーブロードや通信中の表示などPersistentで使うもの) 600~ 799 = 汎用表示(room固有だけどフェードスクリーンより前に出したいもの) 900 = フェードイン・アウト用(PersistentなObjectにしておくとroom切り替え時にも使えて便利です) 2000~ 2999 = ステータス系(スコアだとかHPゲージだとか) 4000~ 4999 = 前景(キャラより前に表示するもの) 6000~ 6999 = キャラクター等(この範囲をゲームのメインにする) 8000~ 8999 = 遠景(キャラより後ろに表示するもの) 10000 = 壁紙や背景塗り潰し等

各割り当て範囲の境界にも余裕を持たせてありますから、後になって「どうしてもこことここの間に何か表示したい」なんてことが起きても心配ありません。

この割り当て範囲の中でも大まかに使うことが重要です。
自機は5200で敵は5400で弾は5600で…といった感じです。割当量が1000じゃ足りないようにもおもえますが、特に前後関係を気にしない場合は同じ数値で大丈夫なので、よほどのことがない限りはこれで十分です。

DepthObject設定だけではなくGMLからでも変更可能なので、この割り当て設定をglobalな変数に定義しておいて動的に割り当てるのも有効な手です。

global.def_depth_debug = 0; global.def_depth_system_main = 1; global.def_depth_system_room = 2; global.def_depth_fade = 3; global.def_depth_status = 4; global.def_depth_frontbg = 5; global.def_depth_main = 6; global.def_depth_backbg = 7; global.def_depth_wallpaper = 8; global.def_depth_value_top[global.def_depth_debug] = 0; global.def_depth_value_size[global.def_depth_debug] = 100; global.def_depth_value_top[global.def_depth_system_main] = 200; global.def_depth_value_size[global.def_depth_system_main] = 200; global.def_depth_value_top[global.def_depth_system_room] = 600; global.def_depth_value_size[global.def_depth_system_room] = 200; global.def_depth_value_top[global.def_depth_fade] = 900; global.def_depth_value_size[global.def_depth_fade] = 1; global.def_depth_value_top[global.def_depth_status] = 2000; global.def_depth_value_size[global.def_depth_status] = 1000; global.def_depth_value_top[global.def_depth_frontbg] = 4000; global.def_depth_value_size[global.def_depth_frontbg] = 1000; global.def_depth_value_top[global.def_depth_main] = 6000; global.def_depth_value_size[global.def_depth_main] = 1000; global.def_depth_value_top[global.def_depth_backbg] = 8000; global.def_depth_value_size[global.def_depth_backbg] = 1000; global.def_depth_value_top[global.def_depth_wallpaper] = 10000; global.def_depth_value_size[global.def_depth_wallpaper] = 1;

これは描画だけではなくサウンドの優先順位なんかでも同様です。