Как отследить в редакторе сцены клик по спрайту?

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

Как отследить в редакторе сцены клик по спрайту?

Сообщение ShockWave2048 30 дек 2017, 19:12

Как отследить в редакторе сцены клик по спрайту (2)?
Задача стоит в выборе (Selection.activeGameObject) родительского (1) GameObject.
MonoBehaviour.OnMouseUp() в редакторе я так понял не работает.
Сам спрайт (3) и иерархия на картинке.
Изображение
May we live to see another day.
Аватара пользователя
ShockWave2048
UNIт
 
Сообщения: 53
Зарегистрирован: 07 авг 2014, 20:23

Re: Как отследить в редакторе сцены клик по спрайту?

Сообщение samana 30 дек 2017, 20:47

Если у вас задача выбора именно родительского объекта, то возможно пригодится этот аттрибут https://docs.unity3d.com/ScriptReferenc ... ibute.html
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как отследить в редакторе сцены клик по спрайту?

Сообщение seaman 30 дек 2017, 22:14

Editor.OnSceneGUI()

+

Синтаксис:
Используется csharp
     if (Event.current.type != EventType.MouseDown || Event.current.button != 0) return;
     Vector3 screenPosition = Event.current.mousePosition;
     screenPosition.y = Camera.current.pixelHeight - screenPosition.y;
     Ray ray = Camera.current.ScreenPointToRay (screenPosition);
     RaycastHit hit;
     if (Physics.Raycast (ray, out hit))
     {
         //По hit определяем ГО в который кликнули и все что нужно...
         Event.current.Use ();
     }
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как отследить в редакторе сцены клик по спрайту?

Сообщение ShockWave2048 30 дек 2017, 22:26

samana писал(а):Если у вас задача выбора именно родительского объекта, то возможно пригодится этот аттрибут https://docs.unity3d.com/ScriptReferenc ... ibute.html

Попробовал, ничего не поменялось в поведение при клике, на 3-й, 4-й раз выбирает GO с самим спрайтом, по кругу, чередует по видимому визуальные объекты под точкой клика, в том числе из корня сцены, без отношения к целевым спрайтам.
May we live to see another day.
Аватара пользователя
ShockWave2048
UNIт
 
Сообщения: 53
Зарегистрирован: 07 авг 2014, 20:23

Re: Как отследить в редакторе сцены клик по спрайту?

Сообщение ShockWave2048 31 дек 2017, 12:56

2 seaman - Спасибо за пример!

Не знаете случаем почему редактор пропускает только на 3-4-й клик по объекту? Перебирает по кругу по моему все объекты под точкой клика.

То есть ваш код срабатывает, но не каждый клик.

Может слушатель должен быть на корневом объекте?
May we live to see another day.
Аватара пользователя
ShockWave2048
UNIт
 
Сообщения: 53
Зарегистрирован: 07 авг 2014, 20:23

Re: Как отследить в редакторе сцены клик по спрайту?

Сообщение lawsonilka 01 янв 2018, 13:36

seaman писал(а):Editor.OnSceneGUI()

+

Синтаксис:
Используется csharp
     if (Event.current.type != EventType.MouseDown || Event.current.button != 0) return;
     Vector3 screenPosition = Event.current.mousePosition;
     screenPosition.y = Camera.current.pixelHeight - screenPosition.y;
     Ray ray = Camera.current.ScreenPointToRay (screenPosition);
     RaycastHit hit;
     if (Physics.Raycast (ray, out hit))
     {
         //По hit определяем ГО в который кликнули и все что нужно...
         Event.current.Use ();
     }

Без выравнивании по y.
Синтаксис:
Используется csharp
Vector3 mousePosition = Event.current.mousePosition;
Ray ray = HandleUtility.GUIPointToWorldRay(mousePosition);
 
lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: Как отследить в редакторе сцены клик по спрайту?

Сообщение ShockWave2048 01 янв 2018, 16:09

2lawsonilka - спасибо за GUIPointToWorldRay();
Не знаете случайно почему не все клики на объекты в редакторе сцены попадают в OnSceneGUI() ?
May we live to see another day.
Аватара пользователя
ShockWave2048
UNIт
 
Сообщения: 53
Зарегистрирован: 07 авг 2014, 20:23


Вернуться в Editor

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

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