myScript.enabled = true активирует скрипт на всех объектах

Программирование на Юнити.

myScript.enabled = true активирует скрипт на всех объектах

Сообщение Zavhoz 16 июл 2009, 07:49

Нахожу скрипт на объекте, активирую его. В идеале должен срабатывать только на том объекте, чьим компонентом является, напрактике же скрипт активируется (реактивируется) на всех объектах. Может в коде чего упустил?

Код: Выделить всё
ScriptName myScript = GameObject.GetComponent(typeof(ScriptName)) as ScriptName;
myScript.enabled = true;
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: myScript.enabled = true активирует скрипт на всех объектах

Сообщение Neodrop 16 июл 2009, 10:17

Я так понимаю, вы хотите найти компонент на каком то конкретном объекте. А ищете в сцене.
GameObject.GetComponent(typeof(ScriptName)) as ScriptName;
Для отдельного объекта надо искать на его переменной, а не через базовый класс :
gameObject.GetComponent(typeof(ScriptName)) as ScriptName;

А вообще так искать крайне медленно.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: myScript.enabled = true активирует скрипт на всех объектах

Сообщение Zavhoz 16 июл 2009, 11:31

так и есть - gameObject.GetComponent (ошибся с регистром), ищу на конкретном объекте, и нахожу именно нужный скрипт - тут всё в порядке.
а ситуация такая: инстансю объекты с небольшим интервалом, при этом активирую скрипт на каждом новом объекте. так вот с каждым последующим добавлением нового объекта, и активацией его скрипта, реактивируются скрипты с ранее добаленных объектов.

а каким способом лучше искать компоненты? буду премного благодарен
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: myScript.enabled = true активирует скрипт на всех объектах

Сообщение Neodrop 16 июл 2009, 12:00

Не по имени, а по типу. А на инстансах вообще не стоит что-то активировать руками. Зачем? Есть же функция Start() которая активируется автоматом при добавлении компонента к объекту, или при его инстансировании.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: myScript.enabled = true активирует скрипт на всех объектах

Сообщение Zavhoz 17 июл 2009, 09:10

копирую я значит правильно, в данном случае ScriptName у меня как класс.

относительно инстансирования. потестировал, выяснилось, что скрипты не реактивиуются, с ними всё в порядке. а всё дело в переменных, верней она одна идёт на все скрипты. в теории ведь, компоненты в каждом инстансированном объекте идут от одного оригинального префаба. и это нормально, но не всегда... как быть с переменными в скриптах, да и другие компоненты тоже инногда надо изменить только на одном объекте, не затрагивая остальные... :-?
вобщем в примере видно что переменная одна на все новоиспечённые объекты. либо я сделал чтото не так. :-w
У вас нет доступа для просмотра вложений в этом сообщении.
FUNNY BLOX
Аватара пользователя
Zavhoz
UNITрон
 
Сообщения: 197
Зарегистрирован: 10 фев 2009, 07:23
Откуда: Караганда KZ
  • ICQ

Re: myScript.enabled = true активирует скрипт на всех объектах

Сообщение Neodrop 17 июл 2009, 10:32

Активируйте свои переменные в функции Start()
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Скрипты

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

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