PlayerPrefs Int Помогите

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

PlayerPrefs Int Помогите

Сообщение unityprob 16 янв 2021, 12:30

Всех с прошедшими праздниками!
Прошу помощи,так как не один день читаю форумы,смотрю видео,пытаюсь настроить скрипт,но ничего не получается.Очень умучался и по этому пришёл сюда за помощью и обьяснением.
Есть две сцены основная и вспомогательная.
На обоих сценах есть кнопка и UIТекст.При нажатии на кнопку в UIТексте прибавляются очки.Но не могу произвести сохранение и чтобы очки отображались на обоих сценах.
В скрипте есть DebugLog который срабатывает и по примерам в интернете PlayerPrefs вроде написал правильно,но даже на одной сцене сохранение и загрузка не производится.
Пытался сохранить и не только Int но и сам UIТекст,но ничего не выходило.
Вот скрипт:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class SaveMonets : MonoBehaviour {
        public  Text monet;     // UI текст выведен на экран
        public int playerScore = 0;  // Int который в дальнейшнем связан с UI текстом


        void Start(){
                monet = GetComponent<Text> ();  
                monet = FindObjectOfType<Text> ();
        }

        void Update(){
                monet.text = playerScore.ToString();  // UI текст выводит то что в Int
        }

        public void PlusMoney()
        {
                playerScore = playerScore + 1; // при нажатии на UI кнопку Int число прибавляется на 1

        }
        public void Save()   //сохранение
        {
                PlayerPrefs.SetInt("Gold", playerScore);

                PlayerPrefs.Save();

                Debug.Log ("SAVE");
        }
        public void Load() //загрузка
        {
                PlayerPrefs.GetInt ("Gold", playerScore);
                        Debug.Log ("LOAD");
                }

        }
unityprob
UNец
 
Сообщения: 11
Зарегистрирован: 16 янв 2021, 12:19

Re: PlayerPrefs Int Помогите

Сообщение samana 16 янв 2021, 12:37

Вы нигде не сохраняете значение, полученное через PlayerPrefs.GetInt
Может вы хотели вот так?
Синтаксис:
Используется csharp
public void Load() //загрузка
{
    playerScore = PlayerPrefs.GetInt("Gold");
    Debug.Log("LOAD");
}
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: PlayerPrefs Int Помогите

Сообщение unityprob 16 янв 2021, 12:44

samana писал(а):Вы нигде не сохраняете значение, полученное через PlayerPrefs.GetInt
Может вы хотели вот так?
Синтаксис:
Используется csharp
public void Load() //загрузка
{
    playerScore = PlayerPrefs.GetInt("Gold");
    Debug.Log("LOAD");
}


На сколько понимаю я пропустил строчки по типу:
Синтаксис:
Используется csharp
string key = "Gold"
playerscore = 1;

PlayerPrefs.SetInt(key,playerscore);
PlayerPrefs.Save();
 
unityprob
UNец
 
Сообщения: 11
Зарегистрирован: 16 янв 2021, 12:19

Re: PlayerPrefs Int Помогите

Сообщение samana 16 янв 2021, 12:49

С моим выше вариантом тоже не работает?
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: PlayerPrefs Int Помогите

Сообщение unityprob 16 янв 2021, 12:50

samana писал(а):С моим выше вариантом тоже не работает?

Нет,так же DebugLog показывает что всё выполнено,но на самом деле ничего не сохраняется и не загружается.
unityprob
UNец
 
Сообщения: 11
Зарегистрирован: 16 янв 2021, 12:19

Re: PlayerPrefs Int Помогите

Сообщение unityprob 16 янв 2021, 13:36

Написал простой скрипт для проверки так же сохраняется или нет,сохранение и загрузка так же не работает,значит дело в скрипте,подправьте пожалуйста где я ошибся..
Делал на сцене три кнопки(первая прибавляет Int,вторая сохраняет,третья загружает)

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class v2 : MonoBehaviour {
       
        public int score;

        public void Save(){
                PlayerPrefs.SetInt ("Gold", score);
                Debug.Log ("Save");
        }
        public void Load(){
                int score = PlayerPrefs.GetInt ("Gold");
                Debug.Log ("Load");
        }
        public void Push(){
                score = score + 1;
        }
}
unityprob
UNец
 
Сообщения: 11
Зарегистрирован: 16 янв 2021, 12:19

Re: PlayerPrefs Int Помогите

Сообщение samana 16 янв 2021, 13:47

Вы создаёте локальную переменную с таким же именем, которая никак не связана с переменной экземпляра класса.
Правильно будет
Синтаксис:
Используется csharp
public void Load(){
                score = PlayerPrefs.GetInt ("Gold");
                Debug.Log ("Load");
        }
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: PlayerPrefs Int Помогите

Сообщение unityprob 16 янв 2021, 17:24

samana писал(а):Вы создаёте локальную переменную с таким же именем, которая никак не связана с переменной экземпляра класса.
Правильно будет
Синтаксис:
Используется csharp
public void Load(){
                score = PlayerPrefs.GetInt ("Gold");
                Debug.Log ("Load");
        }



Написал два скрипта,сохранения и загрузки,всё работает,подскажите пожалуйста как сделать чтобы видно было на обоих сценах монетки и собранные монетки не пропадали при переходе между сцен.Просто сейчас сколько не пробовал и с загрузкой заходить на сцены,ничего не получалось

Скрипт Сохранения
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Save : MonoBehaviour {

        public Load ld;

        public void OnApplicationQuit(){
                PlayerPrefs.SetInt("NumInt",ld.score);
                PlayerPrefs.Save ();
                Debug.Log ("Save");
        }
        public void Loads(){
                if(PlayerPrefs.HasKey("NumInt"));
                ld.score=PlayerPrefs.GetInt("NumInt");
                Debug.Log("Load");
        }
        void Start(){
                PlayerPrefs.SetInt("NumInt",ld.score);
                PlayerPrefs.Save ();
                Debug.Log ("Save");
        }
}



Скрипт загрузки
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Load : MonoBehaviour {

        public int score;
        public Text monet;

        public void Push(){
                score = score + 1;
        }
        public void Update(){
                monet.text = score.ToString ();
        }


}
unityprob
UNец
 
Сообщения: 11
Зарегистрирован: 16 янв 2021, 12:19

Re: PlayerPrefs Int Помогите

Сообщение Farni4k 08 янв 2022, 20:52

Ребята я сделал в игре сохранение за монеты но монеты не отнемаються помогите
if (money > 50)
{
money -= 50;
PlayerPrefs.SetInt("SavedInteger2", score);
PlayerPrefs.Save();
}
money остаёться таким каким был например у меня 100 я купил сохранение
сохранение сделалось но не отнялись деньги
Farni4k
UNец
 
Сообщения: 1
Зарегистрирован: 08 янв 2022, 20:45

Re: PlayerPrefs Int Помогите

Сообщение Alkos26Rus 08 янв 2022, 21:37

Лог поставь и проверь, все там должно отниматься, значит либо вывод на экран не правильно сделал, либо другой код вмешивается, да и почему money > 50? а если у игрока 50 монет? Лучше money >= 50
Синтаксис:
Используется csharp
if (money >= 50)
{
money -= 50;
PlayerPrefs.SetInt("SavedInteger2", score);
PlayerPrefs.Save();
Debug.Log ("money - " + money);
}
 
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 30