Изменить цвет объекта в режиме редактирования - PullRequest
0 голосов
/ 15 мая 2019

Возможно, это проще, чем может показаться, но я не могу найти правильный путь.В моем редакторе у меня есть 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].

Есть ли у вас какие-либо предложения?

1 Ответ

1 голос
/ 15 мая 2019

Я бы предложил вместо изменения цвета; вы меняете материал этого объекта.

Например:

  1. объект имеет материал (1)
  2. материал (1) красный
  3. при смене объекта на материал (2)
  4. материал (2) синий

Чтобы разрешить это изменение

go_highlight.GetComponent<MeshRenderer>().sharedMaterial.color = Color.yellow;

К

go_highlight.GetComponent<MeshRenderer>().material = material (2);

Это упрощенное решение, соответствующее вашему коду, однако для этого есть более эффективные способы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...