Возможно, это проще, чем может показаться, но я не могу найти правильный путь.В моем редакторе у меня есть MonoBehaviour, который я запускаю с [ExecuteInEditMode].В этом скрипте у меня есть следующий код:
void OnGUI() {
Event e = Event.current;
Vector3 mousePosition = e.mousePosition;
mousePosition.y = Screen.height - mousePosition.y;
Ray ray = cam.ScreenPointToRay(mousePosition);
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo, 100f)) {
if (hitInfo.transform.gameObject.name.Contains("MySphere")) {
go_highlight = GameObject.Find(hitInfo.transform.gameObject.name);
go_highlight.GetComponent<MeshRenderer>().sharedMaterial.color = Color.yellow;
}
[...]
В другой части кода я восстанавливаю цвет сферы, если курсор не находится над ней.В сцене у меня есть несколько сфер, и мне нужно выделить одну под указателем мыши.Однако я понимаю, что подсвечены все сферы, а не только та, что находится под курсором.Я предполагаю, что это для "sharedMaterial", но я не могу использовать "Материал", потому что он возвращает ошибку.Я также мог бы прикрепить скрипт к сферам с помощью OnMouseEnter и OnMouseExit, но мне нужно работать в режиме редактирования, и эти методы, похоже, не работают даже с [ExecuteInEditMode].
Есть ли у вас какие-либо предложения?