Nanashi-softプログラマ専用Unityでゲーム開発


◇Unityでゲーム開発 -JavaScript:ゲームセーブ方法-

ゲームデータのセーブ・ロードには,PlayerPrefsクラスを使うのが簡単そうです
ソフト起動時にロードなどの作業は必要ありません
シンプルな分,扱いやすいです

ただ,変数の型毎に Setと Getでおこなうのですが,intとfloatとstringしかありません

・数値セーブ

var data : int;
data = 13;
PlayerPrefs.SetInt("「指標」", data);

・数値ロード

var data : int;
data = PlayerPrefs.GetInt("「指標」");
※存在しない指標を取り出した場合には 0が返る

・文字セーブ

var data : String;
data = "moji";
PlayerPrefs.SetString("「指標」", data);
※同じ指標で保存すると,型が違っていても上書きされる
※日本語は保存できない文字がある

・文字ロード

var data : String;
data = PlayerPrefs.GetString("「指標」");

・データ削除

PlayerPrefs.DeleteKey("「指標」");

・全データ削除

PlayerPrefs.DeleteKey("「指標」");

・数値配列を保存する例

var data : int[] = new int[10];
var i : int;

data[0] = 80;	//HP
data[1] = 100;	//HP MAX
data[2] = 32;	//MP
data[3] = 32;	//MP MAX

for(i=0; i < data.length; i++){
	PlayerPrefs.SetInt("status"+i, data[i]);
}
・それをロードする例
var data : int[] = new int[10];
var i : int;

for(i=0; i < data.length; i++){
	data[i] = PlayerPrefs.SetInt("status"+i);
}

・日本語(UTF-8)文字列セーブ(BASE64エンコード使用)

var data : String;
var base64 : String;
data = "「日本語UTF-8文字列」";
base64 = System.Convert.ToBase64String(System.Text.Encoding.Unicode.GetBytes(data));
PlayerPrefs.SetString("「指標」", base64);
・それをロードする例
var data : String;
var base64 : String;
base64 = PlayerPrefs.GetString("「指標」");
data = System.Text.Encoding.Unicode.GetString(System.Convert.FromBase64String(base64));

・ゲームソフト毎にセーブ箇所を変える方法

メニューの Edit→ Project Settings→ Playerで表示される Inspectorにて,
Product Nameの名称毎に別の場所に保存されます


TOPプログラマ専用Unityでゲーム開発

メイナの実験場~小生意気な感じにしてみました~