Вот более путевые строки
Rect rect = GUILayoutUtility.GetRect( new GUIContent(name), normal, GUILayout.ExpandWidth(true) );
if(i == selected) FillRect(rect, Color.green);
if(GUI.Button(rect, name, normal)) {
if(selected != i) GUIUtility.keyboardControl = 0;
selected = i;
}
Все бы хорошо, но что за бред с Handles.DrawSolidRectangleWithOutline! Сразу после компиляции он еще выдает правильный цвет, но после первой перерисовки снова черным рисует. Странно, но в другом проекте работает.
Может есть где-то матрица трансформации цвета?
UPDATE:
Понял почему не работал Handles.DrawSolidRectangleWithOutline. Нужно было еще и Handles.color задать.
Впрочем все равно почему-то прямоугольник рисуется темнее, чем должен.
Вот код рисования списка
Rect rect = GUILayoutUtility.GetRect( new GUIContent(name), style, GUILayout.ExpandWidth(true) );
if(i == selected) {
Color blue = new Color( 61/255f, 128/255f, 223/255f );
FillRect(rect, blue);
}
GUI.Label(rect, name, style);
if(Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition)) {
if(selected != i) GUIUtility.keyboardControl = 0;
Event.current.Use();
selected = i;
}