SceneView позиция мыши.

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

SceneView позиция мыши.

Сообщение KHarr 06 май 2018, 05:52

Доброго времени, знатоки юнити скритинга.
Мне нобходимо в sceneView, из которого для простоты понимания удалены все объекты включая камеру, получить координаты движущейся мыши.

То есть именно так - никаких "выдели объект" или "создай Plain" - только пустое окно редактора сцены и движущаяся мышь в нем.
Что-то вроде
Синтаксис:
Используется csharp
using UnityEngine;
 using UnityEditor;
 
 //[CustomEditor(typeof(GameObject))]
 
 public class mPos : Editor {
     void OnSceneGUI () {
         Debug.Log( " event >> " + Event.current.type + " >> " + Event.current.mousePosition.ToString());
     }
 }

Эотот код например работает только если раскоментировать строку и выделить в сцене геймобъект, но мне нужно как раз просто таскать мышь над объектами не кликая по сцене или объектам и получать доступ к событиям мыши.

Три дня поиска на форумах юнити результата не дали, то есть либо я не вижу чего-то очевидного либо проблема нерешаема.
KHarr
UNец
 
Сообщения: 5
Зарегистрирован: 06 май 2018, 05:37

Re: SceneView позиция мыши.

Сообщение seaman 06 май 2018, 07:01

seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: SceneView позиция мыши.

Сообщение KHarr 06 май 2018, 09:36


Что бы этот код заработал его надо куда-то вставить, но я не вижу как можно сделать что-то вроде update() для sceneView.
Подправил вариант из мануала, но без успеха. (https://docs.unity3d.com/Manual/RunningEditorCodeOnLaunch.html)
Апдейт исправно щелкает но похоже для всего приложения в целом и никаких ивентов не наблюдается - NullReferenceException: Object reference not set to an instance of an object

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

[InitializeOnLoad]
class MyClass : Editor {
       
        static MyClass ()       {
                EditorApplication.update += Update;
        }

        static void Update ()   {
                Debug.Log( "sEditorClass_typeoffGameObj event >> " + Event.current.type + " >> " + Event.current.mousePosition.ToString());
        }
}
 


При этом прямого ответа в стиле "ивенты не предусмотрены в самостоятельном виде" на форумах юнити я не встречал.
Осталось попробовать обратиться к ивентам через интерфейсы но для меня это экспериментов на сутки точно ))) а потом идеи закончатся.
KHarr
UNец
 
Сообщения: 5
Зарегистрирован: 06 май 2018, 05:37


Re: SceneView позиция мыши.

Сообщение KHarr 06 май 2018, 12:40

seaman писал(а):https://docs.unity3d.com/ScriptReference/EditorWindow.Update.html
https://docs.unity3d.com/ScriptReferenc ... tMode.html
https://docs.unity3d.com/ScriptReferenc ... pdate.html

Увы это я все пробовал, хотя может просто не сумел понять как применить к своему случаю .

первая работает только с editorWindow что не тоже самое что sceneView window
вторая требует чтобы на сцене был объект
третья выдает апдейт но не дает получить доступ к событиям ввода
KHarr
UNец
 
Сообщения: 5
Зарегистрирован: 06 май 2018, 05:37

Re: SceneView позиция мыши.

Сообщение lawsonilka 06 май 2018, 13:51

Такого прямого доступа к отрисовке редактора вам ни кто не даст. Только косвенно можно уловить события, например при клике на разных панелях, hot-control, drag-drop, или уже ранее указанный Update, если бы вы еще уточнили что именно хотите сделать - кароче собрать такую систему из камней и палок. А вообще попробуйте разобрать сам класс Event как он работает, там можно заставить его вызывать события из других действий. Просмотрите раздел EditorInternal там много полезных вещей которые не указаны в документациях, в общем если у вас на столько грандиозная затея то можно и помучаться.
lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: SceneView позиция мыши.

Сообщение seaman 06 май 2018, 22:47

В этот попробуйте. Вроде все работает:
SceneView.onSceneGUIDelegate
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: SceneView позиция мыши.

Сообщение KHarr 07 май 2018, 03:19

seaman писал(а):В этот попробуйте. Вроде все работает:
SceneView.onSceneGUIDelegate
Спасибо, это действительно сработало.
Странно что разрабы Юнити не внесли этот класс в мануал, прям теорией заговора повеяло )))

lawsonilka писал(а): разобрать сам класс Event как он работает
В смысле полистать мануал ?
Или как-то, где-то есть сурс реализации ?

lawsonilka писал(а): раздел EditorInternal
А можно ссылку плиз ?
Пролистал форум и такого раздела или даже темы не обнаружил )
KHarr
UNец
 
Сообщения: 5
Зарегистрирован: 06 май 2018, 05:37

Re: SceneView позиция мыши.

Сообщение seaman 07 май 2018, 10:30

EditorInternal

Думаю имелось в виду где то тут: https://github.com/Unity-Technologies/UnityCsReference
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: SceneView позиция мыши.

Сообщение KHarr 08 май 2018, 04:49

seaman писал(а):Думаю имелось в виду где то тут: https://github.com/Unity-Technologies/UnityCsReference

Охохоо, да это же просто праздник какой-то !!!
Они таки сделали это !

Огроменное спасибо десу )
Эту бы новость, да пришпилить в топ форума.
KHarr
UNец
 
Сообщения: 5
Зарегистрирован: 06 май 2018, 05:37

Re: SceneView позиция мыши.

Сообщение lawsonilka 08 май 2018, 07:58

Они таки сделали это !

Достаточно посмотреть Declaration любого класса Editor и можно будет попасть в подпространство имен EditorInternal.
Странно что разрабы Юнити не внесли этот класс в мануал, прям теорией заговора повеяло

Там очень часто делают изменения, и я думаю, каждый раз переписывать изза этого документацию, которую читают максимум 5% разработчиков, не очень удобно.
Думаю имелось в виду где то тут

Я больше имел ввиду это, но та ссылка то же подойдет.
lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: SceneView позиция мыши.

Сообщение seaman 08 май 2018, 08:43

Я больше имел ввиду это,

Такое уже не один раз закрывали, так что советовать такое мне не хотелось.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


Вернуться в Editor

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

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