#セーブ方法
Unityでセーブorロードを実現するのであれば一番楽なものはPlayerPrefsが最も楽だと思います。
Unity PlayerPrefsのリファレンス
例
Save.cs
PlayerPrefs.SetInt("HP" , 10);
PlayerPrefs.SetFloat("MP" , 10.0f);
PlayerPrefs.SetString("名前","Unityちゃん");
PlayerPrefsでセーブをするにはこのように記述します。
Setする型 | セーブデータの名前 | 値 |
---|---|---|
Int | HP | 10 |
Float | MP | 10.0f |
String | 名前 | Unityちゃん |
int型のHPという名前の箱に10という値を保存 | ||
float型のMPという名前の箱に10.0fという値を保存 | ||
string型の名前という名前の箱にUnityちゃんという値を保存 | ||
###注意 | ||
SetInt SetFloat SetStringは加える[+=]のではなく上書き[=]で保存されるので場合によっては |
test.cs
//HP保存されていた値に+10して保存
PlayerPrefs.SetInt("HP",PlayerPrefs.GetInt("HP")+10);
このように記述しなければいけなくなります。
(他にも色々と方法はありますが今はこれで…)
#ロード方法
先ほど保存したHP MP 名前を呼び出したいと思います。
Load.cs
PlayerPrefs.GetInt("HP");
PlayerPrefs.GetFloat("MP");
PlayerPrefs.GetString("名前");
これで先ほど保存したHP(10) MP(10.0f) 名前(Unityちゃん)を取得することができます。
Getする型 | セーブデータの名前 | 保存されていた値 |
---|---|---|
Int | HP | 10 |
Float | MP | 10.0f |
String | 名前 | Unityちゃん |
#PlayerPrefsで呼び出せるもの
自己解釈した内容で書きます。
ちゃんとした内容が見たい人はこちらから(Unity PlayerPrefsのリファレンス)
PlayerPrefs. | 内容 |
---|---|
SetInt | 設定した名前に対する値を保存します |
SetFloat | 設定した名前に対する値を保存します |
SetString | 設定した名前に対する値を保存します |
GetInt | 設定した名前が存在すれば値を取得します |
GetFloat | 設定した名前が存在すれば値を取得します |
GetString | 設定した名前が存在すれば値を取得します |
DeleteKey | 設定した名前が存在すればそのデータを削除します |
DeleteAll | すべてのセーブデータを削除 |
HasKey | 設定した名前のデータがあるか確認します |
Save | 使ったことないのでわからないです… |
#応用
セーブデータがあるか確認してから保存
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test:MonoBehaviour
{
string userName; //ユーザーの名前
private void Start()
{
//ユ―ザーネームがあるかチェック
if (PlayerPrefs.HasKey("UserName"))
{
Debug.Log("ユーザーの名前があるよ!");
}
else
{
Debug.Log("ユーザーの名前がないよ!");
//ない場合名前を入力させる処理をここから入れる
//一時的に別の名前を入れるよ!
PlayerPrefs.SetString("UserName", userName);
}
}
}
#まとめ
今回の記事を応用したものがこちらになります、使い方がある程度理解できたかたはこちらもご覧ください。