Вы можете использовать PlayerPrefs.SetInt, PlayerPrefs.GetInt для хранения и чтения hp вашего плеера в файловом хранилище.Подробнее об этом читайте здесь:
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
Что касается предоставления игроку +1 л.с. через несколько минут, вы можете хранить DateTime.Now в переменной PlayerPrefs всякий раз, когда вы даете игроку немного л.с. ииспользуйте TimeSpan и TotalMinutesPassed:
TimeSpan passedTime = DateTime.Now - lastStoredDateTime;
int totalMinutesPassed = passedTime.TotalMinutes;
Должно быть что-то вроде этого, я думаю (не тестировал этот код, просто показывая общую идею):
void SetPlayerLives(int lives)
{
playerLives = lives;
PlayerPrefs.SetInt("player-lives",playerLives);
}
//TODO: also sth like => int GetPlayerLives() function
void CheckLiveRegen() //call this function whenever you want to check live regen:
{
int LIVE_REGEN_MINUTES = 5; //regen 1 live every 5 minutes
DateTime lastStoredDateTime = DateTime.Parse(PlayerPrefs.GetString("last-live-regen", DateTime.Now.ToString()));
TimeSpan passedTime = DateTime.Now - lastStoredDateTime;
double totalMinutesPassed = passedTime.TotalMinutes;
if(totalMinutesPassed >= LIVE_REGEN_MINUTES)
{
int val = (int) totalMinutesPassed / LIVE_REGEN_MINUTES;
// Add val to your player lives! + store new lives value
SetPlayerLives(playerLives+val);
//update last-live-regen value:
PlayerPrefs.SetString("last-live-regen", DateTime.Now.ToString());
}
}
Примечание: классы DateTime, TimeSpan имеют некоторыеошибки (особенно в платформе Android) в версиях старше 2017.4 (LTS) Убедитесь, что вы записываете значения и проверяете, работают ли функции должным образом.https://forum.unity.com/threads/android-datetime-now-is-wrong.488380/