Запуск скрипта при фокусе редактора Unity

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Запуск скрипта при фокусе редактора Unity

Сообщение [bm] 03 июл 2014, 14:28

Как можно запустить скрипт, когда фокус на редакторе?
Последний раз редактировалось [bm] 03 июл 2014, 17:16, всего редактировалось 1 раз.
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск

Re: Запуск скрипта на фокусе редактора

Сообщение BenjaminMoore 03 июл 2014, 14:57

что подразумевается под «запустить скрипт»?
My hands are hard. My mind is core.
ring0x0000 c0x0063 | write code in rust right now
Аватара пользователя
BenjaminMoore
UNITрон
 
Сообщения: 338
Зарегистрирован: 03 янв 2013, 18:07
Skype: benjminmoore

Re: Запуск скрипта на фокусе редактора

Сообщение Neodrop 03 июл 2014, 15:22

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

Re: Запуск скрипта на фокусе редактора

Сообщение [bm] 03 июл 2014, 15:50

Это же фокус окна внутри unity? а мне надо фокус на всю unity (Alt+Tab).
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск

Re: Запуск скрипта на фокусе редактора

Сообщение Neodrop 03 июл 2014, 15:59

Дык просто задача описана не точно. :-?
Вот тут даже не знаю, как быть. Не припомню такого механизма в Editor.
Может быть, прокатит такой вариант :
Прицепиться к EditorApplication.update и там проверять состояние флага isUpdating

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

Re: Запуск скрипта на фокусе редактора

Сообщение [bm] 03 июл 2014, 16:02

Во! А вот это подходит. Спасибо! Как же я так забыл про этот колбэк.
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск

Re: Запуск скрипта на фокусе редактора

Сообщение Neodrop 03 июл 2014, 16:03

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

Re: Запуск скрипта на фокусе редактора

Сообщение [bm] 03 июл 2014, 16:37

Уже застрял, добавил аттрибут [InitializeOnLoad] к классу, Update работает. А вот на фокус и на всякие там OnEnable, OnFocus не реагирует. Update вызывается всегда.
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск

Re: Запуск скрипта на фокусе редактора

Сообщение Neodrop 03 июл 2014, 16:40

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

Re: Запуск скрипта на фокусе редактора

Сообщение [bm] 03 июл 2014, 16:56

Код простой:

Синтаксис:
Используется csharp
[InitializeOnLoad]
public static class MyStaticInitializer
{
  static MyStaticInitializer()
  {
    EditorApplication.update += Update;
  }

  void Update()
{
   Debug.Log(ApplicationIsActivated());
}

public static bool ApplicationIsActivated()
{
    var activatedHandle = GetForegroundWindow();
    if (activatedHandle == IntPtr.Zero) {
        return false;       // No window is currently activated
    }

    var procId = Process.GetCurrentProcess().Id;
    int activeProcId;
    GetWindowThreadProcessId(activatedHandle, out activeProcId);

    return activeProcId == procId;
}


[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int GetWindowThreadProcessId(IntPtr handle, out int processId);

}


Работает под виндой.
А как сделать под Мак ОС? :-?
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск


Вернуться в Editor

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

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