Um Ihre Frage zu
Sie sollten nicht STORE GAME STAAT RELATED SACHEN IM PLAYER PREFS
Stattdessen können Sie serialisierbares Objekt machen beantworten:
[Serializable]
public class GameState
{
int m_Score;
public int Score
{
get { return m_Score; }
set { m_Score = value; }
}
}
Dann ein BinaryFormatter
verwenden und einige Helfer Objekt, um diese Daten in eine Datei zu serialisieren:
public void StoreGameState(GameState state)
{
using (BinaryWriter writer = new BinaryWriter(File.OpenWrite("./gamestate.bin")))
{
var formatter = new BinaryFormatter()
formatter.Serialize(state, writer);
}
}
public GameState RestoreGameState()
{
using (BinaryReader reader = new BinaryReader(File.OpenRead("./gamestate.bin")))
{
var formatter = new BinaryFormatter()
return (GameState)formatter.Deserialize(reader);
}
}
Dann GameState
zu Ihrem leeren GameObject
hinzufügen:
public GameState CurrentProgress;
Und lesen Sie, wenn Sie die beiden Methoden verwenden, um speichern oder laden möchte ich geschrieben habe: StoreGameState
und RestoreGameState
.
Aber wenn Sie wirklich in diese Art von Daten in PlayerPrefs
speichern, dann können Sie noch tun:
public GameObject SaveCounter;
public void Save(){
PlayerPrefs.SetInt("Player Score", SaveCounter.GetComponentn<Counter>().counter);
}
public void Load(){
SaveCounter.GetComponentn<Counter>().counter = PlayerPrefs.GetInt("Player Score"));
}
Was nicht von niemandem empfohlen.
Sie sollten 'PlayerPrefs' nicht verwenden, um Spielfortschritte und ähnliches zu speichern. Aber wenn es das ist, was du willst, ja, du kannst es so machen. –
Wie @ m.rogalski sagte. Es ist nicht "der Weg". Ich glaube, dass Unity empfiehlt, dafür ein skriptfähiges Objekt zu verwenden und das zu speichern. ScriptableObjects kann in Assets gespeichert werden :). Oder schreibe deine eigene benutzerdefinierte Gamesave-Datei. – Measuring
@ m.rogalski so kann ich es so machen PlayerPrefs.SetInt ("Player Score", SaveCounter()); PlayerPrefs.GetInt ("Player Score"); –
TheGinxx009