今回は、Unityで「ゲーム内の設定」や「ハイスコア」などを保存しておく方法のメモです。
いくつか方法があるのですが、一番簡単(であろう)PlayerPrefsで見ていきます。
実装例
例えば、音量調整をゲーム起動のたびに設定するのはちょっといただけないですよね。前に「設定した情報は覚えておき」、次回起動時はその「覚えた情報を読み込む」これを簡単に実装していきます。
簡単に言うとセーブ・ロード機能ですかね。情報の保存先は各端末のレジストリになります。
データを記憶する(セーブ機能)
スクリプトで下記の様に書けば「Sound」というキーにsoundvol値が保存されます。
対応している型はfloat以外にはintとstring。
public float soundvol; PlayerPrefs.SetFloat("Sound", soundvol);
データを呼び出し(ロード機能)
呼び出す場合は下記。ゲーム起動時に読み込んでセットするって感じ。
//キーが無い場合0 float soundvol = PlayerPrefs.GetFloat("Sound"); //キーが無い場合10.0f float soundvol = PlayerPrefs.GetFloat("Sound",10.0f);
データ削除
レジストリから削除する場合は下記の様な感じ。
//全部のキーと値を削除 PlayerPrefs.DeleteAll(); //特定のキーと値のみ削除 PlayerPrefs.DeleteKey("Sound");
補足
一応、下記の様な感じでハイスコアの表示とかにも使えるけど、レジストリに値が保存してあるので、ユーザーが変更出来てしまう。あくまでもローカルゲーム限定と言う感じ。
private int Score; PlayerPrefs.SetInt("HighScore", Score);
下記がスクリプトリファレンス。実際の保存先(レジストリ)とかも書いてあったり。
実装方法は凄く簡単だけど、利用方法はコンフィグくらいかな?と思ったり(もちろん、他にも使えなくはないけど)。