Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
-1 / 1 / 0
Регистрация: 29.12.2016
Сообщений: 51

Обращение к переменной одновременно из нескольких скриптов

22.01.2019, 14:34. Показов 3148. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал скрипт, допустим: score, в нем хранятся очки.
Есть два объекта с автовыполнением действий. Соответственно у каждого из объектов свой скрипт. Каждому объекту добавил скрипт score, что потом ссылаться на переменую score. Но вся проблема в том, что только 1 скрипт меняет её значение, а второй нет. В чем проблема?
Например так:
score
C#
1
2
3
4
public class game{
public int score := 0;
 
}
test1
C#
1
2
3
4
public class tes1t{
public int scoreTest1;
scoreTest1 = GetComponent<game>().score;
}
test2

C#
1
2
3
4
public class tes2t{
public int scoreTest2;
scoreTest2 = GetComponent<game>().score;
}
в update я прибавляю к scoreTest1 и scoreTest2 какое-либо числовое значение.
Но меняется только от одного скрипта
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2019, 14:34
Ответы с готовыми решениями:

Обращение нескольких пользователей одновременно к одной таблице
Здравствуйте! Поделитесь опытом. Задача такая: есть несколько связанных таблиц, в них записываются/обновляются данные. Есть несколько...

Запуск 250 скриптов одновременно
Добрый день! Подскажите как запустить 250 скриптов паралельно Я пробую так Но запускается параллельно только 5(( workflow start{ ...

Запуск двух скриптов одновременно PL/SQL
Приветствую! подскажите пожалуйста что не так настроено, у меня и у коллеги 64битн винда и одинаковые версии оракла 9.0.6, но на одном...

13
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
22.01.2019, 14:58
somik159478, мне кажеться, ты берешь компонент не из того объекта из которого хочешь.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
22.01.2019, 15:32
somik159478, ну так int - не ссылочный тип
0
-1 / 1 / 0
Регистрация: 29.12.2016
Сообщений: 51
22.01.2019, 15:46  [ТС]
А как тогда сделать ссылочный тип?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
22.01.2019, 16:10
somik159478,
C#
1
2
3
4
5
6
7
8
[Serializable]
public class RefValue<T> {
 public T value;
}
 
public RefValue<int> score;
///
score.value = 5;
Добавлено через 1 минуту
Так как score теперь класс, то он будет хранится ссылкой и досткп к score.value будет указывать на одно значение

Добавлено через 26 секунд
Только хранить score, а не score.value
0
-1 / 1 / 0
Регистрация: 29.12.2016
Сообщений: 51
22.01.2019, 16:57  [ТС]
Cr0c, не понял как обращаться к этому. Или что я не правильно сделал?:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class scoreScript : MonoBehaviour
{
    public RefValue<int> score;
    public Text text;
    
    // Start is called before the first frame update
    void Start()
    {
        
        score.value = 5;
    }
 
    // Update is called once per frame
    void Update()
    {
        text.text = score.ToString();
    }
}
public class RefValue<T>
{
    public T value;
}
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
22.01.2019, 16:59
somik159478, если значение лежит в score.value, почему выводишь score?
0
-1 / 1 / 0
Регистрация: 29.12.2016
Сообщений: 51
22.01.2019, 17:04  [ТС]
Cr0c,
C#
1
text.text = score.value.ToString();
ничего не изменилось.
NullReferenceException: Object reference not set to an instance of an object
scoreScript.Update () (at Assets/scoreScript.cs:20)

Добавлено через 2 минуты
Unity на
C#
1
 score.value = 5;
уже пишет: {System.NullReferenceException}
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
22.01.2019, 17:05
somik159478, про классы, экземпляры класса, поля, свойства читал? Ты либо в коде создавай инстанс класса, либо в инспекторе. Ну и базовый курс шарпа пройди заодно.
0
-1 / 1 / 0
Регистрация: 29.12.2016
Сообщений: 51
22.01.2019, 17:08  [ТС]
Cr0c, дык я поэтому и спрашиваю, что я не так делаю... Просто можешь показать?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
22.01.2019, 17:11
Не изучил ООП (и шарп в частности) перед использованием.
C#
1
score = new RefValue<int>();
0
-1 / 1 / 0
Регистрация: 29.12.2016
Сообщений: 51
22.01.2019, 17:46  [ТС]
Cr0c, к сожалению, все также как и было... Меняет значение для каждого отдельно...
0
-1 / 1 / 0
Регистрация: 29.12.2016
Сообщений: 51
22.01.2019, 17:47  [ТС]
Я может быть не правильно привязал скрипты?
Миниатюры
Обращение к переменной одновременно из нескольких скриптов   Обращение к переменной одновременно из нескольких скриптов  
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
22.01.2019, 18:22
Лучший ответ Сообщение было отмечено somik159478 как решение

Решение

Цитата Сообщение от somik159478 Посмотреть сообщение
Меняет значение для каждого отдельно...
естественно, у тебя в каждом комопненте свой екземпляр класса, просто создай скрипт и не ложи его никуда:
C#
1
2
3
4
public static class ForScore
{
public static int score;
}
И обращайся ForScore.score из любой точки проекта, без создания екземпляра.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2019, 18:22
Помогаю со студенческими работами здесь

Из-за несовместимости скриптов приложение не запускается одновременно и скрытым, и с пониженным приоритетом
В общем нужно запустить с пониженным приоритетом приложение. скрытное делал через VBA Запускал через /low Но проблема в том...

Возможно ли обращение к переменной с использованием значения строковой переменной?
Есть структура из 20ти различных элементов. Необходимо сформировать строковую переменную, которая бы содержала названия переменных и их...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru