Ich benutze PlayerPerfabs zum Speichern von Spieler Daten, welche Ebene der Spieler entsperrt hat und der Punkt während des Spiels hat, und ich möchte die PlayerPerfabs Daten regelmäßig aktualisiert werden (wie pro 5 Sekunden) ich habe eine Klasse namens ApplicationModel die globalen Daten wie Punkte-Spieler erhalten die Ebene Infos etc ..Unity Set PlayerPrefs Daten regelmäßig
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());
}
}
Aber die Koroutine nie nach dem Konsolenprotokoll ausgeführt wurde zu halten (weil das Protokoll wurde nie gedruckt).
Vielleicht, weil ich dieses Skript nicht an ein Spielobjekt angehängt habe, aber sobald ich dieses an ein Spielobjekt anschließe, wenn die Szene geändert oder das Spielobjekt zerstört wird, wird das regelmäßige Speichern beendet, oder? Also, wie geht das?
Ich denke, es wäre besser, ein Singleton zu verwenden. Als Datenverbindung müssen Deos nicht dupliziert werden. – Andromelus