2016-02-05 5 views
0

Итак, я работаю над окном Custom Editor и пытаюсь получить, когда пользователь нажал левую кнопку мыши. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я нажимаю элемент GUI, который я разместил, в этом случае элемент EditorGUI.Foldout, Event.current не обновляется. Поэтому, когда я пытаюсь проверить, щелкнет ли пользователь левой кнопкой мыши, он ничего не делает, когда это должно быть. Но если я не щелкаю в этой области, он ее обнаруживает!Unity - Event.current в редакторе Окно не обновляется

Итак, мой вопрос к вам, что именно я делаю неправильно здесь? Я собираю Event.current в самой первой строке void OnGUI() и нет где-то еще. Я добавлю некоторые фрагменты кода, которые, надеюсь, помогут найти решение!

Где я называю Event.Current:

void OnGUI() 
{ 
    Event currentEvent = Event.current; 
    ... 
} 

Когда я пытаюсь получить доступ к Event.Current:

void OnGUI() 
{ 
    ... 
    Rect baseLabelRect = new Rect(); 
    baseLabelRect.x = 0; 
    baseLabelRect.y = 21; 
    baseLabelRect.width = this.position.width; 
    baseLabelRect.height = 16; 

    if (selected) 
     EditorGUI.DrawRect(baseLabelRect, selectedItemColor); 

    EditorGUI.indentLevel = 1; 

    GUI.contentColor = Color.black; 
    GUI.backgroundColor = Color.grey; 

    itemListFoldout[0] = EditorGUI.Foldout(baseLabelRect, itemListFoldout[0], "Fouldout test"); 

    GUI.contentColor = origContentColor; 
    GUI.backgroundColor = origBackgroundColor; 

    if (currentEvent.button == 0 && currentEvent.isMouse) 
    { 
     Debug.Log("left mouse button clicked"); 
     if (baseLabelRect.Contains(currentEvent.mousePosition)) 
     { 
      selected = true; 
      Debug.Log("rect clicked"); 
     } 
     else 
      selected = false; 
    } 
} 

Это где я в настоящее время возникли проблемы. Всякий раз, когда я нажимаю на область, где находится EditorGUI.Foldout, она должна быть обнаружена и настроена для выбора. Но он не обновляет Event.current, когда я нажимаю в области Foldout. Но он будет обновляться, если я щелкнул в другом месте в окне редактора.

Если у вас есть идеи, почему это произойдет, я хотел бы услышать ваши идеи! Любая помощь будет оценена!

ответ

0

Другой способ сделать обнаружить кого-то нажав левую кнопку мыши с функцией Input.GetKeyDown в функции обновления, например, так:

void Update(){ 
    if (Input.GetKeyDown(KeyCode.Mouse0)){ 
     Debug.Log("Left mouse button clicked."); 
    } 
} 

Я надеюсь, что это полезно!