Unityで簡単なセーブ機能を作成してみよう
- ラメンスキー

- 2024年10月16日
- 読了時間: 3分

こんにちは、アマギラスです。
Unityでセーブ機能を実装する際、最も手軽に使える方法の一つが PlayerPrefs を用いる方法です。PlayerPrefs は主に小規模なデータの保存に適しており、整数(int)、浮動小数点(float)、文字列(string)のデータを保存することができます。
この記事では、Unityで簡単なセーブ機能をPlayerPrefs を使って int 型や string 型のデータを保存し、ロードする基本的なセーブ機能を実装する方法を紹介します。
1. PlayerPrefsとは?
PlayerPrefs は、ゲーム内のデータを保存し、次回のプレイ時にロードできるようにするUnityのビルトイン機能です。PlayerPrefs は主にスコアや設定情報などの小規模なデータを保存するために使われます。
PlayerPrefs で保存できるデータ型は以下の3つです:
int: 整数データ
float: 浮動小数点データ
string: 文字列データ
2. セーブ機能の実装
2.1 int 型データの保存とロード
例えば、スコアやレベルなどを int 型で保存する場合は、以下のコードを使用します。
using UnityEngine;public class SaveManager : MonoBehaviour{ // スコアを保存するメソッド public void SaveScore(int score) { PlayerPrefs.SetInt("PlayerScore", score); // "PlayerScore" というキーでスコアを保存 PlayerPrefs.Save(); // データを実際に保存する Debug.Log("スコアを保存しました: " + score); } // スコアをロードするメソッド public int LoadScore() { int defaultScore = 0; // スコアが存在しない場合に返すデフォルト値 int score = PlayerPrefs.GetInt("PlayerScore", defaultScore); // 保存されているスコアを取得 Debug.Log("ロードしたスコア: " + score); return score; }}2.2 string 型データの保存とロード
次に、例えばプレイヤー名などを string 型で保存する場合は、以下のコードを使います。
using UnityEngine;public class SaveManager : MonoBehaviour{ // プレイヤー名を保存するメソッド public void SavePlayerName(string playerName) { PlayerPrefs.SetString("PlayerName", playerName); // "PlayerName" というキーでプレイヤー名を保存 PlayerPrefs.Save(); // データを実際に保存する Debug.Log("プレイヤー名を保存しました: " + playerName); } // プレイヤー名をロードするメソッド public string LoadPlayerName() { string defaultName = "Guest"; // プレイヤー名が存在しない場合のデフォルト値 string playerName = PlayerPrefs.GetString("PlayerName", defaultName); // 保存されているプレイヤー名を取得 Debug.Log("ロードしたプレイヤー名: " + playerName); return playerName; }}3. セーブ・ロード機能の実行
これらのセーブ機能をゲーム内で呼び出すには、例えばボタンに紐付けるか、ゲームの進行に応じて呼び出すようにします。
using UnityEngine;public class GameManager : MonoBehaviour{ public SaveManager saveManager; void Start() { // ゲーム開始時にスコアをロード int currentScore = saveManager.LoadScore(); Debug.Log("現在のスコア: " + currentScore); // ゲーム開始時にプレイヤー名をロード string playerName = saveManager.LoadPlayerName(); Debug.Log("現在のプレイヤー名: " + playerName); } public void OnSaveButtonPressed() { // スコアとプレイヤー名を保存 saveManager.SaveScore(100); // 例としてスコア100を保存 saveManager.SavePlayerName("JohnDoe"); // プレイヤー名を保存 } public void OnLoadButtonPressed() { // スコアとプレイヤー名をロード saveManager.LoadScore(); saveManager.LoadPlayerName(); }}3.1 PlayerPrefs.DeleteKey と PlayerPrefs.DeleteAll
保存したデータを削除したい場合は、PlayerPrefs.DeleteKey または PlayerPrefs.DeleteAll を使用します。
PlayerPrefs.DeleteKey("キー名"): 指定したキーのデータを削除します。
PlayerPrefs.DeleteAll(): 保存されている全てのデータを削除します(慎重に使う必要があります)。
// 特定のデータを削除PlayerPrefs.DeleteKey("PlayerScore");// 全てのデータを削除PlayerPrefs.DeleteAll();4. 注意点
PlayerPrefs は、ゲーム内の設定や簡単なデータの保存に適していますが、大量のデータやセキュリティが重要なデータを扱う場合には向いていません。その場合は、ファイル保存やデータベースを使用することを検討しましょう。
データを確実に保存するためには、PlayerPrefs.Save() を明示的に呼び出すことが推奨されます。データはアプリケーションが終了したタイミングでも保存されますが、明示的に保存することで安全性が高まります。
まとめ
今回は PlayerPrefs を使って簡単なセーブ機能を実装しました。PlayerPrefs は小規模なデータの保存に最適な方法であり、設定や進行状況を管理するのに非常に便利です。ぜひ、あなたのプロジェクトでも活用してみてください!


