Unity C# Player Prefs Highscore не работает - PullRequest
0 голосов
/ 17 июня 2020

У меня ошибка с PlayerPrefs в единстве (C#) на Android

Кажется, что он не сохраняет его

Script 1

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Scores : MonoBehaviour
{
    public static int highscore;
    public static int points;

    public void Start()
    {

    }

    public void Update()
    {
            highscore = PlayerPrefs.GetInt("highscore");
            PlayerPrefs.SetInt("highscore", highscore);
            PlayerPrefs.Save();
    }
}

Сценарий 2 (часть, где он используется)

    void Update()
    {
        highscore = PlayerPrefs.GetInt("Highscore");


        if (points > highscore)
        {
            highscore = points;
            highscoretext.text = "Highscore: " + highscore;
            highscoretext2.text = "Highscore: " + highscore;
        }

Я просто могу понять это, когда я получаю рекорд, например, 12 и id ie i go обратно на главный экран, а затем обратно на игра и рейтинг игры совпадают при перезапуске приложения

1 Ответ

0 голосов
/ 17 июня 2020

Когда вы устанавливаете рекорд прямо сейчас, вы получаете текущий рекорд и сохраняете его в переменной highscore. Затем вы продолжаете перезаписывать высокий балл с помощью переменной highscore, фактически устанавливая высокий балл на себя. Что вы на самом деле хотите сделать, так это проверить, превышает ли текущий балл высокий балл, и если это так, вы установите высокий балл на текущий балл.

highscore = PlayerPrefs.GetInt("highscore");
if(score > highscore)
{
    PlayerPrefs.SetInt("highscore", score);
    PlayerPrefs.Save();
}

Еще одна причина, по которой ваш код не работа заключается в том, что вы пишете "highscore" с маленьким h в скрипте 1, но большим h в скрипте 2.

Кроме того, вызов PlayerPrefs.GetInt при каждом обновлении очень неэффективен. Вы должны превратить их в функции, которые вы вызываете только тогда, когда вам нужно получить или установить высокий балл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...