Вы используете пользовательский GUIStyle
.
Вы можете изменить стиль pressed
с помощью onActive
Настройки рендеринга, когдаэлемент включается и нажимается вниз.
и active
Настройки рендеринга при нажатии на элемент управления.
компонентов GUIStyle
Но вам понадобится Texture2D
для него в
myStyle.onActive.background = SomeTexture2D;
к сожалению, нет никакого способадля непосредственного изменения оттенка цвета GUIStyle.
Примечание. Чтобы упростить настройку GUIStyle, вы можете просто создать ресурс в ProjectView → , щелкнуть правой кнопкой мыши → Create
→ GUISkin
Сделайте все свои настройки здесь через Инспектора и просто укажите этот актив GUISkin
в вашем EditorScript и используйте GUI.skin = myReferencedGuiSkin;
В качестве альтернативы вы можете попробовать и использоватькнопка для включения флага.
Вы можете использовать Event.current
и проверить, является ли он type
EventType.MouseUp
или mousePosition
находится за пределами rect
, который вы используете для кнопки для сброса флага.(Не уверен, что это будет работать, хотя)
private bool pressed;
private bool hovered;
...
public void OnGUI()
{
var color = GUI.color;
var rect = new Rect(...);
var ev = Event.current;
hovered = ev.mousePosition.x > rect.x && ev.mousePosition.x < rect.x + rect.width && ev.mousePosition.y > rect.y && ev.mousePosition.y < rect.y + rect.height;
if (Event.current.type == EventType.MouseUp) pressed = false;
else if (ev.type == EventType.MouseDown) pressed = true;
if (hovered && pressed) GUI.color = Color.green;
if (GUI.Button(rect, ...))
{
...
}
GUI.color = color;
// in order to receive the mouse events
Repaint();
}
Если это окно EditorWindow, вы должны убедиться, что wantsMouseMove
установлено в true
, чтобы получать события мыши.
![enter image description here](https://i.stack.imgur.com/byyzD.gif)