GameMaker 日本語掲示板

テキスト外部ファイル化の良い方法を知りたいです。 / 7

10 コメント
views
17 フォロー
7

おお、すごい情報・・・
返事遅くなりすみません、ありがとうございます。

file_text_open_readはそういえばセーブデータの管理に使っていました。
最初からファイルを置くことは無理だと思っていましたがインストーラーを作ることで出来るんですね。

参考にさせていただきます。

通報 ...
  • 8

    最終的に、やっぱりインストーラーより実行ファイルが良い!となったので以下のように落ち着きました。
    フォルダにdatファイルを並べてdatafilesフォルダに入れておき、以下のコードでビルド前に以下のコードのworking_directoryとprogram_directoryを入れ替えることで正しく動く…というやり方です。(exeファイルより深い階層であれば良かったので、フォルダを作れることが分かっただけで解決する話でした)

    // テキストファイルのディレクトリ
    //
    // ビルド時にはdatafilesフォルダの中身を更新してprogram_directoryを読み込む
    
    //dir = program_directory + "/system/";
    dir = working_directory + "/system/";
    
    
    // ファイルからテキストを読み込むための変数
    fid = 0;
    
    readA = array_create(30, "");
    readB = array_create(30, "");
    readC = array_create(30, "");
    
    
    // テキストファイルの読み込み
    fid = file_text_open_read(dir + "scroll_player.dat");
    for(i=0;i<18;i++){
    	readA[i] = file_text_read_string(fid);
    	file_text_readln(fid);
    }
    file_text_close(fid);
    
  • 9
    名前なし 2022/08/03 (水) 07:43:46 修正 >> 7

    test_game.exe
     └system
      └scroll_player.dat

    file_text_open_readで読み込むときは、working_directory等を付けなくても読み込むことが可能です。

    ▼マニュアル working_directoryについて
    https://manual.yoyogames.com/GameMaker_Language/GML_Reference/File_Handling/File_Directories/working_directory.htm

    dir = "system/";
    fid = file_text_open_read(dir + "scroll_player.dat");
    

    で読み込めます。

    file_text_open_read実行時には、ゲームの実行ファイルのある場所が基準となりますので、事項ファイルのある場所以下のパスを入れることで読み込むことができます。デバッグ時も変わらないはずです。

    上にあった、appdata等からも読み込むことができますが、優先順位があります。

    file_text_open_readなどで読み込む際には、ファイルが存在するか?読み込めるか調べて無かった場合、順位が下のファイルが存在するか?読み込めるかを調べていくようです。

    1.「%localappdata%<ゲーム名>」or「%appdata%<ゲーム名>」のパス以下
    2.ゲームの実行パス以下

    ビルド前に

    dir = program_directory + "/system/";
    

    を有効化する必要もないと思います。

    fid = file_text_open_read("system/scroll_player.dat");
    

    なら、実行ファイルのある場所以下systemフォルダのscroll_player.datを読み込めます。

    datafilesに入れたフォルダやファイルは、exeのある場所にそのまま配置されるので、デバッグ時でもプログラムを変える必要はないと思います。デバッグ時もexeが出来たときと同じように読み書きできます。

    datafiles(インクルードファイル)
     └system
      └scroll_player.dat

    で実行ファイルを作成するとファイルの配置は

    test_game.exe
     └system
      └scroll_player.dat

    となります。

    マニュアルのFile Systemページにファイルの仕組みが解説されていますので参考にしてみてください。
    https://manual.yoyogames.com/Additional_Information/The_File_System.htm