Как взять переменную из другого скрипта? [Решено]

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

Как взять переменную из другого скрипта? [Решено]

Сообщение STARTS 11 окт 2011, 10:13

У меня возник нубский вопрос, как взять переменную из одного скрипта и изменить её.
Вот у меня есть скрипт move_test.cs и bonus.cs в скрипте бонус есть приватная переменная score. Вот как из 1 скрипта изменить эту переменную и вывести тоже в 1 скрипте, ну хотя вывести уже не проблема))
Последний раз редактировалось STARTS 11 окт 2011, 12:38, всего редактировалось 1 раз.
STARTS
UNец
 
Сообщения: 9
Зарегистрирован: 10 окт 2011, 17:52

Re: Как взять переменную из другого скрипта?

Сообщение DbIMok 11 окт 2011, 10:42

в чем смысл делать переменную private, а потом пытаться получить к ней доступ?
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.6k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как взять переменную из другого скрипта?

Сообщение Paul Siberdt 11 окт 2011, 10:53

DbIMok, не придирайтесь :D ... Просто юные юниводы следуют тру-наставлениям и слепо пользуются CSharp-ом, не до конца осознавая его жоской философии.

ТС хотел получить ответ а-ля "почитайте про GetComponent".
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как взять переменную из другого скрипта?

Сообщение STARTS 11 окт 2011, 10:56

DbIMok писал(а):в чем смысл делать переменную private, а потом пытаться получить к ней доступ?

Тащимто када пробовал вызывать как в луа bonus.score юнити писал, что-то про переменную, я тада понял что нужно присваивать паблик, присвоил, но юнити уже выдал другую ошибку, понял что это не так вот и написал
З.Ы. Не судите строго мои знания в C#, я недавно начал изучать, ну а так знаю Lua, Pascal, Delphi
STARTS
UNец
 
Сообщения: 9
Зарегистрирован: 10 окт 2011, 17:52

Re: Как взять переменную из другого скрипта?

Сообщение DbIMok 11 окт 2011, 11:03

GetComponent
в "жоской философии" хотя бы правила игры известны
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.6k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как взять переменную из другого скрипта?

Сообщение Paul Siberdt 11 окт 2011, 11:11

А зачем же новичкам знать правила игры? Им главное - ощутить ауру и понять, моё ли это. :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как взять переменную из другого скрипта?

Сообщение seaman 11 окт 2011, 11:20

Раз
Два
Три
Четыре
Пять
Шесть
И все это элементарно находится через поиск.
Седьмая тема по этому вопросу по-моему уже чересчур.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как взять переменную из другого скрипта?

Сообщение Zaicheg 11 окт 2011, 11:24

STARTS писал(а):Тащимто када пробовал вызывать как в луа bonus.score юнити писал, что-то про переменную, я тада понял что нужно присваивать паблик, присвоил, но юнити уже выдал другую ошибку, понял что это не так вот и написал

Феерия. В следующий раз, когда решите запостить поток мысли без указания изменений в условиях ("присвоил паблик, получил другую ошибку"), полного текста ошибки, участка кода, на который ведёт ошибка, и прочей сопроводительной информации, готовьтесь к плохому.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Как взять переменную из другого скрипта?

Сообщение Paul Siberdt 11 окт 2011, 11:32

seaman писал(а):.... И все это элементарно находится через поиск.
Седьмая тема по этому вопросу по-моему уже чересчур.

Ха... а я как раз пытался налинковать похожих тем, да попал на ошибку базы данных. Потому решил, что поиск не работает чичас на форуме.
STARTS, а я б напрягся уже... из полудюжины ответов в вашей теме, большая часть - от модератороф. :ymparty:
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как взять переменную из другого скрипта?

Сообщение STARTS 11 окт 2011, 11:42

Спасибо всем за ответы)
Ну напрягся, не напрягся, а изучать то С# как-то нужно)
А от модеров как раз таки поступил, самый толковый ответ в линках)
Вот такой код в сообщении:
Синтаксис:
Используется csharp
float rate = GetComponent<Weapon>().rate;
         Debug.Log(rate);

У меня получилось вот так:
Синтаксис:
Используется csharp
        int score = gameObject.GetComponent<bonus>().score;
        //other.DoSomething();
        score = score + 1;
 

и Юнти всё равно ругается:
NullReferenceException: Object reference not set to an instance of an object
move_test.Update () (at Assets/move_test.cs:50)
STARTS
UNец
 
Сообщения: 9
Зарегистрирован: 10 окт 2011, 17:52

Re: Как взять переменную из другого скрипта?

Сообщение seaman 11 окт 2011, 11:47

Скрипт bonus висит на том же объекте, что и приведенный скрипт?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как взять переменную из другого скрипта?

Сообщение STARTS 11 окт 2011, 11:47

Всё исправил, опять забыл что Юнити чувствутелен к регистру, нужно
Синтаксис:
Используется csharp
int score = GameObject.GetComponent<bonus>().score;

Подождите...Поспешил)
Теперь игра запускается и работает, но очки не прибавляются, а Юнити в логе что-то пытается сказать
NullReferenceException: Object reference not set to an instance of an object
bonus.Update () (at Assets/bonus.cs:23)
Код таков:
Синтаксис:
Используется csharp
                if (Obj_dist.transform.position.z >= Obj.transform.position.z && Obj_dist.transform.position.y <= Obj.transform.position.y){
                    Destroy(Obj_dist);
                        int score = GetComponent<move_test>().score;
                        score = score + 1;
                }
STARTS
UNец
 
Сообщения: 9
Зарегистрирован: 10 окт 2011, 17:52

Re: Как взять переменную из другого скрипта?

Сообщение waruiyume 11 окт 2011, 12:24

int score = GetComponent<move_test>().score;
Т.к. int тип значения, будет изменятся лишь только-что созданная локальная переменная.
Создайте static переменную score в классе move_test, и меняйте её (move_test.score++)
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Как взять переменную из другого скрипта?

Сообщение STARTS 11 окт 2011, 12:32

Сделал как вы посоветовали, Юнити опять ругается
Assets/bonus.cs(22,59): error CS0122: `move_test.score' is inaccessible due to its protection level
STARTS
UNец
 
Сообщения: 9
Зарегистрирован: 10 окт 2011, 17:52

Re: Как взять переменную из другого скрипта?

Сообщение waruiyume 11 окт 2011, 12:35

public static int score;
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

След.

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

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

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