【Unity】情報を保存するメソッド(1)

Unityでの情報の保存とメソッド化の簡単なサンプルをみていきましょう

基本のコード

public void SameLevel(int level)
{
    if (level < 1 || 99 < level)
    {
        throw new Exception("レベルは1から99で指定してください");
    }

    PlayerPrefs.SetInt("level", level);
    PlayerPrefs.Save();
    Debug.Log("レベルを保存しました");
}

Unityでのサンプル

Unityで上記のコードを利用する方法を説明します。この関数は特定のレベルを受け取り、それが1から99の範囲内にあることを確認した後、そのレベルを永続的に保存します。この範囲外の値が渡された場合、関数は例外をスローします。これはゲームのレベル管理システムで便利です。

Unityプロジェクトでこの機能を実装する基本ステップは以下の通りです:

  1. 新しいC#スクリプトの作成: Unityエディタで新しいC#スクリプトを作成します。名前は何でも良いですが、このコンテキストではLevelManagerと命名することをお勧めします。
  2. スクリプトの編集: 作成したスクリプトをダブルクリックして、コードエディタで開きます。
  3. コードの追加: 以下のサンプルコードをスクリプトに追加または編集します。
using UnityEngine;

public class LevelManager : MonoBehaviour
{
    // このメソッドを呼び出してレベルを保存します
    public void SameLevel(int level)
    {
        if (level < 1 || 99 < level)
        {
            throw new System.Exception("レベルは1から99で指定してください");
        }

        PlayerPrefs.SetInt("level", level);
        PlayerPrefs.Save();
        Debug.Log("レベルを保存しました");
    }

    // 例として、スタート時にレベル10を保存するデモ
    void Start()
    {
        try
        {
            SameLevel(10); // ここでレベルを設定
        }
        catch (System.Exception ex)
        {
            Debug.LogError(ex.Message);
        }
    }
}
  1. Unityエディタに戻る: Unityエディタに戻り、このスクリプトをゲームオブジェクトにアタッチします。スタート時にレベル10が保存され、コンソールにその旨がログとして出力されることが確認できます。
  2. プレイしてテスト: Unityエディタのプレイボタンをクリックしてゲームを開始し、SameLevelメソッドが期待通りに動作し、コンソールに「レベルを保存しました」というログが表示されるかを確認します。また、無効なレベル値を渡すことで、例外が正しくスローされるかもテストしてください。

この機能は、ゲーム内でユーザーの進行状況を管理する際に非常に役立ちます。PlayerPrefsを使用することで、アプリケーションが閉じられた後もユーザーのレベル情報が保存され、次回起動時にその情報を復元できます。ただし、PlayerPrefsはセキュリティが高い情報の保存には適していないことに注意してください。セキュリティが求められる情報は、より安全な保存方法を検討する必要があります。

Unity

Posted by hidepon