Я искал информацию, чтобы попытаться решить мою проблему, и я просто не могу понять, чем она вызвана. Настройки игрока, похоже, отлично работают в редакторе единиц, но как только я сделаю сборку для Android или P C, все они исчезнут. У меня есть PlayerPrefs.deleteВсе нет, где в моем проекте.
У меня есть 3 сцены: Меню, Игра и GameOver. Когда я запускаю сцену Меню, я запускаю этот скрипт, прикрепленный к MainCamera:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class prefs : MonoBehaviour
{
public static int bestRecord;
// Start is called before the first frame update
void Start()
{
bestRecord = PlayerPrefs.GetInt("K", 1);
Debug.Log(PlayerPrefs.GetInt("K").ToString());
}
}
Когда я go на игровой сцене, мой счет - TextMeshProU GUI, который постоянно обновляется InvokeRepeating :
public TextMeshProUGUI points;
void Start()
{
stop = false;
InvokeRepeating("subirMetros", 0f, 0.01f);
}
private void subirMetros()
{
if (stop == false)
{
points.SetText(Math.Round(character.transform.position.x, 0) + "");
}
}
//GameOver is called when the player dies
public void GameOver()
{
stop = true;
CancelInvoke("subirMetros");
int finalPoints = Int32.Parse(points.text);
int recordActual = PlayerPrefs.GetInt("K");
if (recordActual < finalPoints)
{
PlayerPrefs.SetInt("K", finalPoints);
}
SceneManager.LoadScene("GameOver");
}
}
Наконец, при запуске сцены GameOver я снова получаю PlayerPrefs, которые якобы сохраняются перед тем, как попасть на сцену:
public TextMeshProUGUI record;
void Start()
{
record.text = PlayerPrefs.GetInt("K").ToString();
}
Странно то, что это работает в редакторе единства, но не когда я его создаю. Я был бы очень признателен, если бы кто-нибудь мог мне помочь, спасибо.