テクニック集/セーブファイルを作る

Last-modified: 2022-10-03 (月) 15:24:46

Iniオブジェクトを使ってゲームのスコアやオプション設定などの情報を
セーブファイルとして外部に保存する方法を解説します。

 

サンプルプログラム

今回の講座で使用するサンプルプログラムです。

iniファイルの書式

iniファイルで保存できるデータは、「数値」と「文字列」とオブジェクトの位置(座標)です。
iniファイルの書式は以下のようになっています。

[Group] ←グループ
Item= ←アイテム(項目)

グループはファイル内での見出しのようなものです。
用途ごとに複数のアイテムをまとめて別名のグループに分けると管理しやすいと思います。
アイテムは実際にデータが保存される箇所です。= の後に数値や文字列が入ります。
グループやアイテムには好きな名前を設定できます。
※iniの書式の解説はこちらも参考にしてください。

Iniオブジェクトのプロパティ

では実際に今回のサンプルを見ていきましょう。
まずはIniオブジェクトのプロパティから。

  • 使用するIniファイル

saveini01.png

ここで使用するiniファイルを指定しておけば、そのファイルにアクセスするようになるので、イベントでファイルの指定をする必要はありません。
しかし、セーブファイルを複数扱うなどの場合は、ここを使わずにイベントから指定することになるでしょう。
ここに入力するファイル名はファイル名のみ入力した場合は、"C:\WINDOWS"(XPの場合)に作成されます。
フルパスで入力するとその場所に作成されます。

 

以下はイベントからファイル名を指定する方法です。この場合は、念のためにプロパティのファイル名は空白にしておきましょう。

 

「現在のファイルを変更」を選択。「オブジェクトからデータを抽出」から「特別」→「ファイル名」→「アプリケーションパス名」を選択。
apppath.png

 

apppath2.png
挿入された「Apppath$」に続いてファイル名を指定します。これでexeと同じ場所にセーブファイルが作成されるようになります。

 

※プロパティの『Application Data フォルダに INI ファイルを作成する』にチェックが入っていると下記の方法と同様の結果にならないので注意

データの保存

続いてイベントです。
まずはiniの保存から。

saveini02.png

サンプルでは先述のIniオブジェクトのプロパティでファイル名を指定したので無いですが、
指定しなかった場合は、アクションの"Set current file (現在のファイルを変更)"でアクセスするファイルを最初に指定します。
※ファイルの指定を変更しない限り、Iniオブジェクトはずっとそのファイルを指定したままになります。

 

iniにデータを保存する手順は、
グループの指定→アイテムの指定→アイテムに設定するデータ(数値か文字列か)を入力
となります。
"Set current group (現在のグループを変更)"→"Set current item (現在の項目を変更)"→"Set value (値を変更)"(または"Set string (文字列を変更)")
と、1つずつ指定していっても良いのですが、"Set value (group - item) (値(グループ - 項目)を変更)"などを使えば、グループ名とアイテム名とデータの入力を同時に行うことができます。
今回のサンプルでは、カウンタの値を"Value"グループの"Counter"アイテムに、エディットボックスの文字列を"String"グループの"Editbox"アイテムに保存しています。

データの読み込み

最後にiniファイルからの読み込みです。
今度はIniオブジェクトだけではなく、データを読み込ませたいオブジェクトにもアクションを設定します。

saveini03.png

計算式にてIniオブジェクトからデータを取得します。
ここでも、先にIniオブジェクトでグループ名とアイテム名を指定してからデータを対象のオブジェクトに入れても良いのですが、
ここでもグループ名とアイテム名は同時に指定できるのでサンプルではそうしています。
しかし、後々グループ名を変えることがあった場合、最初にグループ名を指定しておけば、
グループ名を変えたとき、イベントではそこをいじるだけで済みますので、
「グループ名 - アイテム名」で同時に指定している全てのアクションを1つずつ変更するよりは楽です。
ここは自身の制作スタイルによって使い分けると良いでしょう。

コメント

  • これ知りたかったのでメッチャ助かります。 -- 2010-05-30 (日) 01:56:05
  • 他エクステンションやバイナリセーブファイルの作り方等も教えて欲しいです。お願いします。 -- 2010-06-06 (日) 22:08:41
  • 詳しい解説ありがとうございます~☆大変助かりました。 -- kousaku? 2010-06-13 (日) 22:11:22
  • 大変助かりました -- 2012-11-12 (月) 05:51:10
  • 当該スレで説明のためファイルを一部改変し使わせていただきました。 -- kusa? 2012-11-28 (水) 23:20:24