🖥️
[GMS2]スクリーンショットの撮り方
GameMaker Studio2でスクリーンショット(静止画・GIF画像)を撮る方法についてのメモです。
下記のように、スクリーンショットキャプチャ用のObjectを作成し、ゲームの最初のルームに配置するだけです。
ルームをまたいでのGIF画像の記録も可能なように、ObjectはPersistentにチェックを入れておくと良いです。
※ルーム編集画面で分かりやすいように、適当なスプライトを割り当てていますが、特に必要ありません。
obj_screen_captureの中身
Createイベント
num = 1; //記録したGIF画像のファイル名に連番をつけるための変数
ss_num = 1; //記録したスクリーンショット画像のファイル名に連番をつけるための変数
gif_record = false; //GIF画像のレコーディング中/停止中の切り替え変数
Stepイベント
// ここでは、キーボードのSキーを押すとスクリーンショットが撮れるようにする
if keyboard_check_pressed(ord("S"))
{
var _path = working_directory + "Screens/Screen_" + string(ss_num++) + ".png";
screen_save(_path);
}
Drawイベント
//何も記述しない。空のDrawイベントを作成しておくと、
//オブジェクトにスプライトが割り当てられていても、表示されなくなるので、
//仮スプライトがゲーム中に間違って表示されてしまうことを未然に防いでおく。
Post Drawイベント
// ここでは、キーボードのGキーを押すとGIF画像のレコーディングが開始/停止されるようにする
if (keyboard_check_pressed(ord("G"))){
gif_record = !gif_record;
if (gif_record == true){
//記録する画面のサイズをここで指定。スクロールのあるゲームなどの場合、roomのサイズでなく、view_wportなど、カメラで写している範囲を設定する。
gif = gif_open(room_width,room_height);
// 一応デバッグメッセージにレコーディング開始を表示
show_debug_message("gif recording start");
}
else {
gif_save(gif, working_directory + "CapturedGif_"+string(num)+".gif");
// 一応デバッグメッセージに保存場所のパスを表示
show_debug_message(working_directory);
show_debug_message("gif recording end");
num++;
}
}
// ここで毎フレームの画面をGIF画像として追加していく
if (gif_record == true){
// このブロックは、GUIレイヤーをキャプチャしたくなければ必要ないが、
// もしGUIごとキャプチャしたい場合は、
// すべてのGUIを、別サーフェス(下記の場合だとglobal.gui_surface)に
// 作成しておいて、それをapplication_surfaceにコピーする。
//surface_set_target(application_surface);
//draw_surface(global.gui_surface,0,0);
//surface_reset_target();
gif_add_surface(gif,application_surface,2,0,0,2);
}
上記のObjectで、スクリーンショットを撮ることができます。
Discussion