- Home /
Reverse GUILayout
Hi! there,
Recently I have encountered a problem: If I create a GUILayout
Area
, starting with a FlexibleSpace
followed by a dynamic series of boxes, it generates a bottom to top flow.
However, when I add too many boxes, to the point where they overflow the GUILayout
area, the boxes get cut off (as expected), the problem is that they get cut off at the bottom of the Area
, meaning that the newer boxes (which are rendered last) end up getting cut off, while the old boxes stay within view. (I hope this makes sense)
My question is how to reverse this order (or how to fake it), so that the newer boxes are rendered first and on overflow they get cut off at the top of the Area
.
I am still using 3.5, so maybe this has been fixed in 4 (or added)?
Thanks in advance, Benpoductions1
Answer by Benproductions1 · Apr 07, 2013 at 01:36 AM
Hi! I seem to have answered my own question XD
So to do exactly what I wanted, I would need only 1 piece of information: The height of all the boxes that I was rendering, so that I could use GUILayout.Space
instead of FlexibleSpace
and then use the height of the area to determine how much space (can be negative) the should be above the boxes.
So I went to the docs and found GUILayoutUtility
: Basically the way you get rectangles as if you were using GUILayout
with a certain style and content.
So before I render the boxes, when the Event.current
is of type EventType.Repaint
, I calculate the height of all the GUILayout
boxes as if they were there, then I render the boxes underneath a GUILayout.Space
with a height of the area minus the previously calculated height
Hope this helps other people too, Benproductions1
Your answer
![](https://koobas.hobune.stream/wayback/20220613095810im_/https://answers.unity.com/themes/thub/images/avi.jpg)