Чтобы ответить на ваш вопрос
ВЫ НЕ ДОЛЖНЫ STORE GAME ГОСУДАРСТВА, СВЯЗАННЫЕ С ВЕЩЕЙ В ПЛЕЕР PREFS
Вместо этого вы можете сделать сериализации объект:
[Serializable]
public class GameState
{
int m_Score;
public int Score
{
get { return m_Score; }
set { m_Score = value; }
}
}
Затем используйте BinaryFormatter
и некоторые вспомогательные объект для сериализации этих данных в файл:
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);
}
}
Затем добавьте GameState
в ваш пустой GameObject
:
public GameState CurrentProgress;
и читать всякий раз, когда вы хотите, чтобы сохранить или загрузить использовать два метода я разместил: StoreGameState
и RestoreGameState
.
Но если вы действительно в хранении такого рода данных в PlayerPrefs
то вы можете сделать:
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"));
}
Который никем не рекомендуется.
Вы не должны использовать 'PlayerPrefs' для хранения любого игрового хода и т. Д. Но если это то, что вы хотите, то да, вы можете сделать это несколько так. –
Как @ m.rogalski сказал. Это не «путь к дороге». Я считаю, что Unity рекомендует использовать для этого сценарий и сохранить его. Объекты ScriptableObject могут быть сохранены в активах :). Или напишите свой собственный файл gamesave. – Measuring
@ m.rogalski поэтому я могу сделать это вот так: PlayerPrefs.SetInt («Оценка игрока», SaveCounter()); PlayerPrefs.GetInt («Счет игрока»); –
TheGinxx009