Нарисовать прямоугольник можно так
private static void FillRect(Rect rect, Color color) {
if(Event.current.type != EventType.Repaint) return;
Vector3 a = new Vector3(rect.xMin, rect.yMin, 0);
Vector3 b = new Vector3(rect.xMax, rect.yMin, 0);
Vector3 c = new Vector3(rect.xMax, rect.yMax, 0);
Vector3 d = new Vector3(rect.xMin, rect.yMax, 0);
Vector3[] verts = new Vector3[] {
a, b, c, d
};
Handles.DrawSolidRectangleWithOutline( verts, color, new Color(0,0,0,0));
}
Хотя этот способ почему-то сейчас впервые странно себя повел. Задаю белый цвет, а он зеленым рисует. Остальные цвета вообще черным рисует.
Написал такую фигню
if( GUILayout.Button(name, GUI.skin.label, GUILayout.ExpandWidth(true)) ) {
if(selected != i) GUIUtility.keyboardControl = 0;
selected = i;
}
if(i == selected) {
Rect rect = GUILayoutUtility.GetLastRect();
FillRect(rect, Color.white);
}
Но прямоугольник рисуется после текста и закрашивает его(
Если все же свой стиль создавать для этого, то есть пару вопросов.
Нужно новый GUISkin создавать? В новом скине можно будет изменить только дефолтные стили(label, box, button и др) или можно свои добавить? Как потом в Editor этот скин загрузить?