Можно ли отловить событие изменения скрипта в инспекторе?

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

Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение DDDENISSS 08 дек 2011, 01:11

Давно задавался таким вопросом, но так и не нашел ответ.
Можно ли в скрипте узнать, что допустим Transfrom или другой скрипт был изменен?
Допустим вычислить высоту земли под фонарем, чтобы рисовать на земле блеск. Или выровнять координаты объекта по координатной сетке для тайловой игры и др.
Или можно только тупо написать ExecuteInEditMode и в каждом Update считать?
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение Левш@ 08 дек 2011, 14:04

Можно ли в скрипте узнать, что допустим Transfrom или другой скрипт был изменен?

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

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение DDDENISSS 08 дек 2011, 15:22

Мне надо, чтобы когда я перемещал в редакторе объект, то в скрипте вызывался метод.
Ну или можно было узнать, что скрипт был изменен с прошлого Update.
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение Левш@ 08 дек 2011, 18:22

Не вижу проблем, записывай значения в доп. переменные и сравнивай их через промежутки времени.

Синтаксис:
Используется javascript
var posY = Vector3.zero;
var controlTime = 0.1;
private var orderControl = 0;

function Update () {
        if ( orderControl == 0)
            orderControl = 1;
            Record ();
        if ( orderControl == 2)
            orderControl = 3;
            Control ();
}
function Record () {
            posY = transform.position;
            yield WaitForSeconds (controlTime);
            orderControl = 2;
}
function Control  () {
        if (transform.position != posY) // если что то поменялось то...
            // тут действия
            orderControl = 0;
}


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

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение DDDENISSS 08 дек 2011, 19:27

Левш@, до такого я и сам додумаюсь. Просто надеялся, что есть нормальный способ. Тем более я писал про все скрипты, а не только Transform.
Да и лучше уж тогда считать это просто когда объект выделен. В OnDrawGizmosSelected(). Или в Update с условием if( Selection.activeGameObject == gameObject ).
Кстати, сейчас обнаружил, что Update в редакторе вызывается только при сохранении сцены. Он так и должен вызываться только при сохранении сцены? Раньше вроде каждый кадр вызывался или я этого не заметил.
Хорошо бы это было сделать при потери фокуса объектом, но такое событие тоже не отловить.
Вот как было бы правильно в редакторе выронить объекты по координатной сетке?
Удобно было бы, если бы объект выровнялся, когда был отпущен мышью(т.е. перестали его тащить), но способа узнать объект зажат мышью или нет я вообще не нашел.
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение seaman 08 дек 2011, 21:21

В EditorWindow есть OnProjectChange и OnHierarchyChange. Создаешь невидимое окно и в нем делаешь что надо.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение Левш@ 08 дек 2011, 22:40

DDDENISSS писал(а):Мне надо, чтобы когда я перемещал в редакторе объект, то в скрипте вызывался метод.
Ну или можно было узнать, что скрипт был изменен с прошлого Update.

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

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение DDDENISSS 08 дек 2011, 23:23

Левш@, да ничего)
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: Можно ли отловить событие изменения скрипта в инспекторе?

Сообщение trololoid 11 дек 2011, 09:59

но способа узнать объект зажат мышью или нет я вообще не нашел.

Я делал так : При клике мышью пускал райкаст туда, куда смотрит камера, получал G0, изменял в нём переменную, а уже при изменении этой переменной что-либо происходило.
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия


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

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

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