С Новым годом! Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 11

Как сделать так чтобы переменные сбрасывались после перезагрузки сцены

27.03.2022, 20:15. Показов 3515. Ответов 12

Студворк — интернет-сервис помощи студентам
Здравствуйте, пишу небольшую игру, в общем надо чтобы здоровье возвращалось в значение 1f, однако после перезагрузки сцены оно остаётся на нуле. Что сделать не знаю, понимаю, что можно прибавить 1f после перезагрузки, однако данный способ не прокатывает со шкалой маны, вот так надеюсь на вашу помощь.
Вот собственно код кнопки рестарт.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
 
public class ScriptMenu : MonoBehaviour
{
 
    public void Restart()
    {
        SceneManager.LoadScene(2);
        Time.timeScale = 1;
    }
Вот скрипт здоровья отрывок из кода точнее
C#
1
2
3
4
5
6
7
8
9
10
if (BarXP.Hp == 0.25f)
            {
               panel.SetActive(true);
                if (!paused)
                {
                    Time.timeScale = 0;
                    paused = true;
                    Music.SetActive(false);
                }
            }
Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; 
 
public class HealthBar : MonoBehaviour
{
    public Image XpBar;
    public static float Hp = 1f;
    
 
    void Update()
    {
        XpBar.fillAmount = Hp;
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2022, 20:15
Ответы с готовыми решениями:

Как сделать, чтобы все значения переменных в скриптах сбрасывались при выходе из сцены?
Есть две сцены. В первой стартовое меню, во второй игровой мир. Переход между ними реализован такой командой: ...

Как в datagridview сделать так, чтобы введённые в неё вручную данные не сбрасывались?
Проблема: dgv данные введенные вручную сбрасывает, то есть на вид то они отображаются, но на деле при дальнейших операциях (типа сложения...

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

12
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
27.03.2022, 20:19
fgewrt, static поля не привязаны к объектам на сцене, а потому и не изменяются при перезапуске.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 11
27.03.2022, 20:22  [ТС]
Что посоветуете? Просто данный скрипт я использую в других скриптах, если честно не знаю как по другому если только не через public static юзать переменную в другом коде
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
27.03.2022, 20:25
fgewrt, указывать в других скриптах ссылку на этот и так уже брать переменную.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 11
27.03.2022, 20:29  [ТС]
Как в других скриптах указать ссылку , я просто новичок в Unity. Обычно обращался так
C#
1
2
3
4
5
6
if(BarXP.Hp >= 1f & xp >= 1 & xp <= 5)
            {
             Shead.SetActive(true);
             instance.incrementXP(1); 
             ShieldBarScript.Shield += 0.2f;
            }
Теперь даже не знаю))))
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
27.03.2022, 20:38
Лучший ответ Сообщение было отмечено fgewrt как решение

Решение

fgewrt, объявляешь поле:
C#
1
[SerializeField] private HealthBar BarHp;
Потом в редакторе назначаешь туда этот объект со скриптом.
Затем в скрипте обращаешься к нему:
C#
1
BarHp.Hp
По сути ничего не меняется, что и показывает ненадобность здесь статики. Ее вообще обычно используют очень редко, только для случаев, когда используется какая-то глобальная переменная на весь проект. Пытайся не использовать static без крайней необходимости.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 11
27.03.2022, 20:57  [ТС]
Спасибо! То есть получается в скрипте где используется переменная со здоровьем мы объявляем строчку
C#
1
[SerializeField] private BarXP BarXp;
Далее просто кидаем скрипт самого здоровья в строчку объекта где нужна та самая переменная , и уже спокойно юзаем xpbar?
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
27.03.2022, 21:05
fgewrt, именно.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 11
27.03.2022, 21:10  [ТС]
Странно не видит почему то скрипт, ругается, мол не объявлена переменная как static

Добавлено через 3 минуты
А нет всё ок! Спасибо!
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
27.03.2022, 21:11
fgewrt, ты хоть убрал static у поля Hp? Если да, то покажи сам код, скорее всего ты не до конца все понял.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 11
27.03.2022, 21:16  [ТС]
Да я убрал static, и к каждому объекту который берёт переменную привязал бар, только вот вопрос в префабах такая фигня не прокатывает?
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
27.03.2022, 21:19
fgewrt, префаб - это шаблон объекта, а значит и поля пусты сначала. Для префаба нужно искать объект на сцене, например с помощью Find. Но вообще, если все правильно реализовывать, то это не нужно. А так как с нуля проект переделывать ты вряд ли захочешь, то придется мастерить костыли.
0
0 / 0 / 0
Регистрация: 24.03.2019
Сообщений: 11
27.03.2022, 21:23  [ТС]
Ок спасибо за помощь, я в принципе уже понял как я могу сделать по-другому, а главное праильно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.03.2022, 21:23
Помогаю со студенческими работами здесь

Как сделать так, чтобы переменные сессии удалялись после закрытия браузера?
Здравия всем! Подскажите пожалуйста, как сделать так, чтобы после закрытия браузера, сессия разрывалась и удалялись все переменные сессии....

AJAX. Как сделать так, чтобы данные обновлялись в таблице без перезагрузки страницы?
Здравствуйте. Есть страница, на которой пользователь может обновить свои Имя и Фамилию. Но при нажатии кнопки &quot;save_name&quot;...

Как сделать так, чтобы локальные переменные не обнулялись автоматически?
Сижу под Linux, использую Code::Blocks, компилятор gcc. Я заметил одну неприятную вещь: когда я где-то забываю что-то обнулить,...

Как сделать чтобы драйвера не слетали после перезагрузки системы?
Драйвера на передние usb и на пару задних(не все задние, что странно) слетают после перезагрузки ПК, и в диспетчере стоит восклицательный...

Как сделать, чтобы переменная PATH сохранялась после перезагрузки?
Здравствуйте! Помогите настроить переменную PATH так, чтоб после перезагрузки внесенные изменения сохранялись. Вводил в терминале: export...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru