2
私はPlayerPerfabsを使用して、プレイヤーのロックが解除されているポイントやゲーム中のポイントなどのプレーヤーデータを保存しています。プレイ中にPlayerPerfabsデータを定期的に(5秒ごとに)私はレベルの情報などを取得するポイントプレーヤーのようなグローバルデータを保持するためにApplicationModelというクラス..ユニティはPlayerPrefsのデータを定期的に設定します
public ApplicationModel: MonoBehaviour{
public static int point {get;set;}
//try to load the PlayerPerfabs when start game.
static ApplicationModel(){
if(PlayerPerfabs.HasKey("point")){
point = PlayerPerfabs.GetInt("point");
}else{
point = 0;
}
}
//coroutine to set the data to PlayerPerfabs
IEnumerator Save()
{
while (true)
{
Debug.Log("setting playerperfab ....");
yield return new WaitForSeconds(5f);
ApplicationModel.RestorePerfab();
}
}
public static void RestorePerfab(){
PlayerPerfabs.SetInt("point", point);
}
private void Start(){
StartCoroutine(Save());
}
}
をしたが、コルーチンは、コンソールログ(ログが印刷されなかった原因)に従って実行されることはなかったです。
ゲームオブジェクトにこのスクリプトを添付していない可能性がありますが、これをゲームオブジェクトにアタッチすると、シーンが変更されたり、ゲームオブジェクトが破棄されたりすると、定期的な保存が終了します。だからこれをどうやって?
シングルトンを使う方が良いと思います。データリンクデオを複製する必要はありません。 – Andromelus