Size: a a a

2021 March 31

VK

Vladimir Kornev in unity3d.ru
Иван Норкин
Правильно ли я сделал сохранение прогресса игры? Это должно работать так заходишь в игру загружается 1 уровень, проходишь уровня 2, а на 3 выходишь. Потом заходишь и сразу загружается 3 уровень.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SL : MonoBehaviour
{
   public int index;

   // Start is called before the first frame update
   void Start()
   {
       index=PlayerPrefs.GetInt("index");
       Load();
       
   }
   private void OnTriggerEnter(Collider other)
   {
       if (this.CompareTag("Player") && other.CompareTag("Finish"))
       {
           index=SceneManager.GetActiveScene().buildIndex+1;
       }
   }

   // Update is called once per frame
   void Update()
   {
       PlayerPrefs.SetInt("index", index);
   }
   void Load()
   {
       SceneManager.LoadScene(index);
   }
   private void OnAppIicationQuit()
   {
       PlayerPrefs.Save();
   }
}
лучше сохраняй в это значение в приватное поле , а уж в OnApplicationQuit - делай сразу и SetInt и Save
источник

N

Needle in unity3d.ru
Vladimir Kornev
лучше сохраняй в это значение в приватное поле , а уж в OnApplicationQuit - делай сразу и SetInt и Save
это грубейшая ошибка, никто не гарантирует вызов OnApplicationQuit при закрытии приожения на мобилках
источник

VK

Vladimir Kornev in unity3d.ru
Needle
это грубейшая ошибка, никто не гарантирует вызов OnApplicationQuit при закрытии приожения на мобилках
ага, и это кстати тоже :)
источник

(

(ノ°益°)ノ in unity3d.ru
Привет, есть у кого-то гайд как сделать движение npc, в платформере чтоб ходил в определенной зоне циклично повторяя движение?
источник

ИН

Иван Норкин... in unity3d.ru
И шо делать?
источник

А

Александр in unity3d.ru
Иван Норкин
И шо делать?
Сохранять данные в моменты, к которым игрок загружаться будет. Например, в переходы между уровнями и тд.
источник

VK

Vladimir Kornev in unity3d.ru
Иван Норкин
И шо делать?
не надеяться на OnApplicationQuit и делать сохранение именно когда уровень пройден.
источник

ИН

Иван Норкин... in unity3d.ru
Хмм...
источник

ИН

Иван Норкин... in unity3d.ru
Вот так?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SL : MonoBehaviour
{
   public int index;

   // Start is called before the first frame update
   void Start()
   {
       index=PlayerPrefs.GetInt("index");
       Load();
       
   }
   private void OnTriggerEnter(Collider other)
   {
       if (this.CompareTag("Player") && other.CompareTag("Finish"))
       {
           index=SceneManager.GetActiveScene().buildIndex+1;
PlayerPrefs.Save();
       }
   }

   // Update is called once per frame
   void Update()
   {
       PlayerPrefs.SetInt("index", index);
   }
   void Load()
   {
       SceneManager.LoadScene(index);
   }
}
источник

P

Phantom in unity3d.ru
Vladimir Kornev
со структурой работа быстрее - она же не ссылка
Если постоянно создавать, то да, а если нет, то будет больше мешать и даже медленнее работать (но про это не уверен)
источник

ИН

Иван Норкин... in unity3d.ru
Иван Норкин
Вот так?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SL : MonoBehaviour
{
   public int index;

   // Start is called before the first frame update
   void Start()
   {
       index=PlayerPrefs.GetInt("index");
       Load();
       
   }
   private void OnTriggerEnter(Collider other)
   {
       if (this.CompareTag("Player") && other.CompareTag("Finish"))
       {
           index=SceneManager.GetActiveScene().buildIndex+1;
PlayerPrefs.Save();
       }
   }

   // Update is called once per frame
   void Update()
   {
       PlayerPrefs.SetInt("index", index);
   }
   void Load()
   {
       SceneManager.LoadScene(index);
   }
}
Вобще меня интересует всё ли хорошо с загрузкой сохранённой сцены.
источник

A

Arkasha in unity3d.ru
Иван Норкин
Вобще меня интересует всё ли хорошо с загрузкой сохранённой сцены.
Из update убери сохранение, и в целом приемлемо будет
источник

ИН

Иван Норкин... in unity3d.ru
Ясно
источник

A

Arkasha in unity3d.ru
Иван Норкин
Ясно
Ну а в целом если замечания интересуют, то не стоит под каждый уровень свою сцену делать, создаёшь одну сцену, и в неё подгружаешь префабы уровней
источник

ИН

Иван Норкин... in unity3d.ru
Я не знаю почему, но когда я создал этот скрипт у меня перестало работать управление(через  EventTrigger ), но если убрать строчку с LoadScene оно снова работает, но ведь сохранение не будет работать! Почему так происходит?
источник

A

Arkasha in unity3d.ru
Иван Норкин
Я не знаю почему, но когда я создал этот скрипт у меня перестало работать управление(через  EventTrigger ), но если убрать строчку с LoadScene оно снова работает, но ведь сохранение не будет работать! Почему так происходит?
Ну у тебя этот скрипт висит на игроке, а игрок находится в сцене, и получается что каждый раз загружаясь сцена снова себя загружает, и так по кругу
источник

A

Arkasha in unity3d.ru
Иван Норкин
Я не знаю почему, но когда я создал этот скрипт у меня перестало работать управление(через  EventTrigger ), но если убрать строчку с LoadScene оно снова работает, но ведь сохранение не будет работать! Почему так происходит?
Сделай загрузку по кнопке, вынеси в UI, а сейв можешь оставить в игроке
источник

ИН

Иван Норкин... in unity3d.ru
Arkasha
Ну у тебя этот скрипт висит на игроке, а игрок находится в сцене, и получается что каждый раз загружаясь сцена снова себя загружает, и так по кругу
Он висит на камере
источник

A

Arkasha in unity3d.ru
Иван Норкин
Он висит на камере
Это неважно, камера же в сцене
источник

A

Arkasha in unity3d.ru
Загрузил сцену, запустил скрипт и все по новой
источник