GameMaker 日本語掲示板

セーブファイルを活用して実行中に変数を変更する関数

3 コメント
views
16 フォロー

セーブファイルを活用して実行中に変数を変更する関数をつくってみました。
関数を呼び出すだけでセーブファイルが作成され、実行中にそのファイルをいじると反映されるというものです。

関数

function reload_variable(key,value) {
    static map = {};
    
    var fileName = "ReloadVariable.txt";
    var sectionName = "Parameter";
    
    
    //初回登録(セーブファイルが生成されます)
    if(!variable_struct_exists(map,key)) {
        map[$ key] = value;
        ini_open(fileName);        
        if(is_string(value))    ini_write_string(sectionName,key,value);
        else                    ini_write_real(sectionName,key,value);
        ini_close();
    }
    
    //Hキーでリロード
    if(keyboard_check_pressed(ord("H"))) { 
        ini_open(fileName);
        if(is_string(value))    map[$ key] = ini_read_string(sectionName,key,value);
        else                    map[$ key] = ini_read_real(sectionName,key,value);
        ini_close();        
    }
    
    return map[$ key];
}

使い方

//drawイベント
var xx = reload_variable("xx",0);
var yy = reload_variable("yy",0);
var name = reload_variable("name", "abc");
draw_text(xx,yy,name);
  • Step or Drawイベントで実行中に変更したい変数に使う。
  • reload_variable(変数名,デフォルト値)
  • 実行したら下の場所にReloadVariable.txtが生成される。(Winの場合)
  • ユーザー名/AppData/Local/プロジェクト名
  • テキストファイルのパラメーターを変更してセーブする。
  • 実行中のウィンドウにもどりHキーを押す。

結果

画像1

注意点

  • 引数の変数名に被りがあると共通したパラメーターを使用してしまいます。
  • デバック時のみを想定しています。変数ひとつにつきファイル処理が呼ばれるので処理速度はかなり悪いです。
  • ある程度値が決まったら関数を消したほうがいいでしょう。
  • 新たな変数を追加したい場合、セーブファイルには古いパラメーターが残ったままになるのでReloadVariable.txtを一旦消すことをおすすめします。
生高橋
作成: 2022/03/22 (火) 00:56:10
最終更新: 2022/03/22 (火) 00:56:39
通報 ...
1

デザインや動きの演出に関して微調整をひたすら繰り返す時に、これによって何度もビルドし直す必要が無くなるわけですね!

2
生高橋 2022/03/23 (水) 17:21:40

ですです

3
ぽんでり 2022/03/29 (火) 16:26:40

これは有用ですねー!