Отключение скрипта - все просто!(?)

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

Отключение скрипта - все просто!(?)

Сообщение Krubbs 22 мар 2012, 09:34

Доброго времени суток! И очередной, простейший вопрос: как выключить скрипт? Теоретически все просто - я создаю новый скрипт, при срабатывании которого отключается другой. Порылся в справке... что-то поделал... и не работает нишиша. Решил просто скопипастить скрипт из хелпа - и он тоже не работает. Казалось бы, задача элементарная... что делать? Как быть?
Ниже сам скопипизженный скрипт из хелпа, переписал только название скрипта дабы проверить работоспособность на своей сцене.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    void Update() {
        GetComponent<SelectHide>().enabled = false;
    }
}
Krubbs
UNец
 
Сообщения: 39
Зарегистрирован: 20 мар 2012, 10:02

Re: Отключение скрипта - все просто!(?)

Сообщение gate1 22 мар 2012, 10:01

У тебя в инспекторе висит два скрипта name1 ,name2.отключаем name2:
В скрипте name1 создаем экземпляр классаname2
Синтаксис:
Используется csharp
Name2 temp=new Name2();
temp=(Name2)GetComponent("Name2");
tmp.enable=false;

Все.
Аватара пользователя
gate1
UNITрон
 
Сообщения: 198
Зарегистрирован: 27 дек 2011, 22:19
Откуда: Минск

Re: Отключение скрипта - все просто!(?)

Сообщение WhiteDevil 22 мар 2012, 22:57

gate1
Вы написали непонятную и не особо помогающую вещь...

Krubbs
У вас все верно. Только вызывайте не в апдейте, а в старте
И оба скрипта должны быть включены в инспекторе изначально

И что в вашем понимании "отключение". Может вы ожидаете какого-то другого результата
Аватара пользователя
WhiteDevil
UNIверсал
 
Сообщения: 455
Зарегистрирован: 19 дек 2010, 15:55

Re: Отключение скрипта - все просто!(?)

Сообщение seaman 22 мар 2012, 23:04

Только вызывайте не в апдейте, а в старте

зачем? Ему же наверное нужно по условию. А это отнюдь не в старте.
Может вы ожидаете какого-то другого результата

А это верно. Отключение скрипта означает, что не будут вызываться Update методы. Если Вы каким-то образом из другого скрипта вызываете метод "отключенного" скрипта,- он преспокойно сработает.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Отключение скрипта - все просто!(?)

Сообщение gate1 22 мар 2012, 23:34

WhiteDevil писал(а):gate1
Вы написали непонятную и не особо помогающую вещь...


А что непонятного? галочка в инспекторе снимается, соответственно скрипт отключается.
Аватара пользователя
gate1
UNITрон
 
Сообщения: 198
Зарегистрирован: 27 дек 2011, 22:19
Откуда: Минск

Re: Отключение скрипта - все просто!(?)

Сообщение waruiyume 23 мар 2012, 01:50

gate1 писал(а):
Синтаксис:
Используется csharp
Name2 temp=new Name2();
 


Каким макаром можно создать экземпляр класса-наследника монобеха, с помощью оператора new и накой это нужно?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Отключение скрипта - все просто!(?)

Сообщение Krubbs 23 мар 2012, 08:49

WhiteDevil писал(а):gate1
Вы написали непонятную и не особо помогающую вещь...

Krubbs
У вас все верно. Только вызывайте не в апдейте, а в старте
И оба скрипта должны быть включены в инспекторе изначально

И что в вашем понимании "отключение". Может вы ожидаете какого-то другого результата


Стоит задача "тотального" отключения скрипта - не только функций Update и ей подобной, но и (важно!) OnMouseEnter, OnMouse... и т.д. Дело в том, что при наведении мышки на объект, он становится зеленым. Если я тыкну на объект, исчезают все остальные кроме него, и сейчас нужно отключить возможность покраски его в зеленый цвет
Krubbs
UNец
 
Сообщения: 39
Зарегистрирован: 20 мар 2012, 10:02

Re: Отключение скрипта - все просто!(?)

Сообщение waruiyume 23 мар 2012, 08:59

Синтаксис:
Используется csharp
void OnMouseDown ()
{
   if(!enabled)return;
   //---------------------------
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Отключение скрипта - все просто!(?)

Сообщение gate1 23 мар 2012, 09:05

Я может что и коряво написал,но скрипт проверил,работает галочка снимается.что нам мешает создать экземпляр класса?
Аватара пользователя
gate1
UNITрон
 
Сообщения: 198
Зарегистрирован: 27 дек 2011, 22:19
Откуда: Минск

Re: Отключение скрипта - все просто!(?)

Сообщение waruiyume 23 мар 2012, 09:11

Консоль писал(а):You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Отключение скрипта - все просто!(?)

Сообщение gate1 23 мар 2012, 10:34

Ну да ругается. Тогда просто
ScriptName2 tmp =(ScriptName2)GetComponent("ScripName2");
tmp.enable=false:
По сути это тоже самое,что и тс написал. Его вариант проверил тоже все работает, в чем проблема-то?
Аватара пользователя
gate1
UNITрон
 
Сообщения: 198
Зарегистрирован: 27 дек 2011, 22:19
Откуда: Минск

Re: Отключение скрипта - все просто!(?)

Сообщение Левш@ 23 мар 2012, 12:16

как выключить скрипт? Теоретически все просто - я создаю новый скрипт, при срабатывании которого отключается другой.

To Krubbs, имееться ввиду детонация ? Каким образом скрипт должен " сработать" ?
Неужели так трудно понять что получить быстрый и точный ответ можно лишь задав четкий, прозрачный вопрос.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Отключение скрипта - все просто!(?)

Сообщение AndreyMust19 24 мар 2012, 12:22

Если нужно совсем-совсем отключить скрипт, тогда может проще его удалить? А для включения добавить компонент заново, предварительно запомнив значения всех публичных переменных.

Если это вас не устраивает - создавайте еще одну булевую переменную и выходите из каждой публичной функции если эта переменная = false.
Либо создайте публичный делегат для вызова каждой приватной функции функции, а при отключении скрипта - назначайте делегатам пустую функцию.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


cron