Страница 1 из 1

Как из одного скрипта запустить/остановить другой скрипт

СообщениеДобавлено: 14 июл 2009, 10:30
Zavhoz
Каким способом остановить/запустить выполнение скрипта из другого скрипта. Определённо, гдето уже видел такое, перекопал весь форум, не могу найти... буду очень признателен.
И ещё вопрос. В скрипте всего три функции Start(), Update() и OnTriggerEnter(). Если в инспекторе убрать галочку на скрипте, то в теории он не должен выполняться. На практике же первые две функции молчат, а функция OnTriggerEnter() выполняется. Может плохо учил уроки?

Re: Как из одного скрипта запустить/остановить другой скрипт

СообщениеДобавлено: 14 июл 2009, 10:43
fox
если скрипт уже назначен объекту, то ищешь его и ScriptName.enable = true/false; если не назначен, то сначала добавляешь как компонент и там тоже через enabled.
На счет трех функций...гм функций может быть сколь угодно много! А отключение галочки, это и есть enabled, отключает тока Update и Start, но не убирает скрипта из проекта, его функциями ты можешь пользоваться и в отключенном состоянии.

Re: Как из одного скрипта запустить/остановить другой скрипт

СообщениеДобавлено: 14 июл 2009, 11:10
Zavhoz
по первому понятно, спасибо.
а вот по второму: я понимаю что отключив скрипт, я его никуда не удаляю, а так сказать откладываю на потом. но в данном случае "на потом" срабатывает само по себе, т.е. мне функция из скрипта нужна через 10 минут, а она сама собой сейчас выполнилась... нехорошо :-?

Re: Как из одного скрипта запустить/остановить другой скрипт

СообщениеДобавлено: 14 июл 2009, 11:32
Neodrop
Поставьте логическую проверку на активность скрипта.
Делов то. :-?

C#
Код: Выделить всё
void OnTriggerEnter()
{
   if (!enabled) return;
}

Re: Как из одного скрипта запустить/остановить другой скрипт

СообщениеДобавлено: 14 июл 2009, 12:18
Neodrop
А чтобы и вовсе исключить объект из коллизий, нужно перенести его в слой Ignore Collision при отключении скрипта.
и событие OnTrigger перестанет вызываться совсем.
То есть:

C#
Код: Выделить всё
void OnDisable()
{
   gameObject.layer = 2;
}