Хобрук: Ваш путь к мастерству в программировании

Как сохранить счет в Unity

Я застрял со следующей проблемой: у меня есть игра на рыбалку. Пока что, если я играю в игру, я могу начать рыбалку, поймать еще 2,3,4 рыбы и все в порядке.

Однако, если я хочу приостановить игру (нажав ESC или кнопку, которую я поместил в сцену), мой счет сбрасывается. Кроме того, я не знаю, как сохранить свой счет, даже если я ставлю игру на паузу или нажимаю кнопку магазина.

Стартовая функция

void Start()
{
    PlayerPrefs.GetInt("Pesti");
    NrPesti.text = PlayerPrefs.GetInt("Pesti").ToString();

    PlayerPrefs.GetInt("Viermisori");
    NrViermisori.text = PlayerPrefs.GetInt("Viermisori").ToString();

    PlayerPrefs.GetInt("Score");
    Score.text = PlayerPrefs.GetInt("Score").ToString();

    PlaySound(0);
}

Функция обновления:

void Update()
{
    Debug.Log(NrViermisori.text);
    Debug.Log(NrPesti.text);
    Debug.Log(Score.text);
    if (NrPesti.name =="Pesti")
    {
        NrPesti.text = "Lovers: " + NrPesti.text;
    }
    PlayerPrefs.SetString("NrPesti", NrPesti.text);
   if(NrViermisori.name == "Viermisori")
    {

        NrViermisori.text = "Beasts: " + NrViermisori.text;
    }
    PlayerPrefs.SetString("Viermisori", NrViermisori.text);


    if (Input.GetKeyDown(KeyCode.Escape)) Application.Quit();

}
15.02.2017

  • Я не вижу ничего, что могло бы справиться со сценарием, когда вы сохраняете счет в PlayerPrefs. 15.02.2017
  • Может быть, потому что вы нигде не устанавливаете значение Pesti? Кроме того, вы не сохраняете PlayerPrefs. 15.02.2017
  • docs.unity3d.com/ScriptReference/PlayerPrefs.Save.html 15.02.2017

Ответы:


1

В вашем методе обновления попробуйте добавить что-нибудь в свой код, где вы обнаруживаете Escape Press.

if (Input.GetKeyDown(KeyCode.Escape)){ 
    PlayerPrefs.setInt("Score", Int32.Parse(Score.text));
    //Verify property is saved
    Int scoreTest = PlayerPrefs.getInt("Score");
    Debug.Log(scoreTest);
    Application.Quit();
}

Удачи

15.02.2017

2

Я думаю, что это неправильный способ сохранить/загрузить вашу партитуру, выполняя операции непосредственно с Text.text.
Если вы хотите сохранить и загрузить свою партитуру, создайте отдельную переменную score для хранения вашей партитуры, а затем используйте ее в ваши элементы пользовательского интерфейса.
Например, здесь объясняется, как вы сохраняете оценки во время выполнения:

public class Score: MonoBehaviour {

    public int score = 0;

    // Use this for initialization
    void Start () {
        // get the score when this gameObject initialized
        score = PlayerPrefs.GetInt("Player Score");
    }

    // Update is called once per frame
    void Update () {
        // this is how you set your score to PlayerPrefs
        if (Input.GetKeyDown(KeyCode.Escape)) {
            PlayerPrefs.SetInt("Player Score", score);
        }
    }

    // this is an public function to be used 
    // outside of the class to update score
    public void UpdateScore(int amount) {
        score += amount;
    }
}

И используйте свою оценку в своем классе пользовательского интерфейса:

public class DisplayScore : MonoBehaviour {

    public Text scoreText;
    public Score playerScore;

    // Use this for initialization
    void Start () {
        // get your Score component here or just drag it in inspector
    }

    // Update is called once per frame
    void Update () {
        // this updates the score at every frame
        scoreText.text = playerScore.score.ToString();
    }
}

не забудьте using UnityEngine.UI, так будет намного проще сохранять/загружать счет.

Обычно вам не нужно вызывать PlayerPrefs.Save(), так как данные будут автоматически записаны на диск при выходе из игры (он автоматически вызывается в OnApplicationQuit()), но вы можете вызвать его в определенный момент (т.е. контрольные точки) в случае сбоя программы или других непредвиденных ситуаций.

16.02.2017
  • Я до сих пор не понимаю, как я могу это сделать. 17.02.2017
  • @StefanSmarandache, вам нужно понять, как работает PlayerPrefs, PlayerPrefs который хранит и получает доступ к настройкам игрока между игровыми сессиями. Вы можете сохранить переменную в сцене, присвоив ей ключ и значение, и получить доступ к значению в другой сцене с помощью указанного вами ключа. Вы можете прочитать документацию по PlayerPrefs здесь: (docs.unity3d.com/ScriptReference/PlayerPrefs.html< /а> ) 19.02.2017

  • 3

    У вас должен быть своего рода класс GameManager, где вы храните все, что вам нужно запомнить, в соответствующих attributes. Когда вы начинаете игру, вы создаете экземпляр GM и ссылаетесь на этот объект в логике игры. Такие вещи, как Score, должны храниться и обрабатываться в GM. Таким образом, вы можете быть уверены, что «сохраните» свой счет, пока игра жива.

    15.02.2017
    Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...