Делаем игровой счётчик очков в Unity();

Elleyer

I never seen a white person before.
Сообщения
27
Симпатии
37
#1
Всем привет. Начинаем!
Мне залезла в голову идея по добавлению скинов. Но никак не за валюту, а за очки в оффлайне. Кстати, эти скины можно будет юзать в онлайне в будущем. Использовать будем PlayerPrefs (Есть в директиве UnityEngine). Для начала, нужно сделать float с очками статическим(Также необходимо для добавления очков при уроне). Допустим, что очки уже готовы, и вы хотите их сложить, и/или вывести наибольшее количество. Для второго варианта это будет выглядеть так :
C#:
        if (Currently_score >= PlayerPrefs.GetFloat("Highest score"))
        {
            PlayerPrefs.SetFloat("Highest score", Currently_score);
        }
Поясняю : Скрипт будет работать при запуске уровня с ботами. У нас в базе данных уже есть float с названием "Highest score" (Мы создали с помощью PlayerPrefs.SetFloat ("Highest score") , и если то число очков, которое мы набрали во время ЭТОЙ игры будет больше чем то, которое есть базе, то оно переписывает этот ("Highest score") на тот Currenlty_score, который у нас сейчас. В противном случае - условие не сработает, и число не будет перезаписано. Теперь о сложении : Так как Currently_score у нас был статическим - мы можем использовать его в другом скрипте, значит так и сделаем : Создаём скрипт, который будет стартовать после смерти игрока (Логично), и мы добавляем текущее значение очков к тому, которое есть в дб :
C#:
void Start()
    {
        PlayerPrefs.SetFloat("TotalScore", (PlayerPrefs.GetFloat("TotalScore") + Scores.Currently_score)); //Видишь тут плюсик?)
    }
С помощью PlayerPrefs.SetFloat - Мы создали float с названием "TotalScore" в дб , и добавляем к нему текущее значение очков.
А теперь мы хотим получить эти данные в настройках. void Start - Всё, что там есть , стартует только ОДИН раз с самого начала запуска скрипта. Делаем проверку поля "TotalScore" в дб через PlayerPrefs в нашем скрипте где хотим это вывести :
C#:
public class Settings : MonoBehaviour
{

    public GameObject start,styling,scores,Settingspanel,text,Particlesky, toggles;
    public Toggle Checkboxparticle;
    public Text HighestScore, Times_Played,TotalScore,Ping;
    public Image Line;
    public static int PlayedCount;
    bool ModeVisual, ModeStats, ModeNetwork = false;

    void Start()
    {
        TotalScore.text = ("Total  score :  " + PlayerPrefs.GetFloat("TotalScore"));
        HighestScore.text = ("Highest  score :  " + PlayerPrefs.GetFloat("Highest score"));
        Times_Played.text = ("Times  played :  " + PlayerPrefs.GetInt("Play Counter"));
    }
}
Поясняю : PlayerPrefs.GetFloat("Название строки") - Вытянуть с дб float с названием, которое уже создавали. Оно тянет с дб float с именем "TotalScore", и то, что там есть, с помощью TotalScore.text (не забудьте подключить UnityEngine.UI) будет на месте текста :
1538911279111.png
В следующем уроке буду добавлять визуал за очки, писать проверки, и так далее. Всем спасибо, кто прочитал.
 
Последнее редактирование: