Roblox GUI builder is absolute GARBAGE!

the ROBLOX GUI Builder is…ABSOLUTE GARBAGE:

I’m trying to make a pretty complex plugin, that lets users manage their projects easier. But what is problem #1? ROBLOX BEING GARBAGE.

Roblox currently has NO RELIABLE method for listing objects.

  • UiListLayout - GARBAGE
  • UiTableLayout - NON FUNCTIONAL
  • UiPageLayour - NON FUNCTIONAL
  • UiGridLayout - NON FUNCTIONAL

In my plugin, I need 3 things:

  • Automatic canvas size
  • Automatic size on elements in list
  • UiPadding on elements in list

But on Roblox, all of the UiList options they have are not compatible with these. For example, when I use UiListLayout, it does not allow me to add padding without it GOING OUT OF FRAME with automatic canvas size

image

All of the UIList options simply refuse to work.

As you can see INSTEAD OF FIXING their current systems, they just ADD MORE NON TESTED GARBAGE.

10 Likes

I’m sorry to break it to you but these will not work together, by logic. Automatic canvas size depends on all child UIs having a consistent size, which they don’t because the child UI’s size are being automatically scaled to ratio the canvas size. It’s going to be an endless back and forth so it will just not work.

Here’s a tutorial I recorded late at night that should help you with everything else :smiling_face_with_three_hearts:

42 Likes

why is the audio loud is this suppose to be funny or

8 Likes

i forgot to adjust the volume but i hope the video itself is still helpful

dont ask dont tell

3 Likes

it was but the audio just makes it uncomfortable

3 Likes

What are you even talking about? These function fine.

Add a UIPadding or size them manually.

7 Likes

I’ve had problems with scrolling frames so this was actually helpful.

Wonderful audio quality btw more singers should use those types of microphones

4 Likes

It happens to the best of us. Sometimes, you just spend hours and hours trying to get something to work and it just won’t.

Perhaps take a break, and when you’re ready, start looking at some tutorials on how other developers have worked with Roblox GUI objects. I hope you find your way out of this and come back a better dev!

2 Likes

The issue occurs when either

  1. the padding you set on the UiListLayout is too large

or

  1. the gui inside of the UiListLayout are inconsistent sizes:

The reason it worked in your video is because you didnt meet either of these 2 conditions. You used the same GUI with small padding.

Automatic canvas size

UIListLayouts work perfectly with automatic canvas size for me. I set my canvas size to 0 and let Roblox do the lifting for me.

Automatic size on elements in list

…what? You know children scale size still works with UIListLayouts and auto-sized canvas, right?

UIPadding

I’m also pretty sure auto-sized canvas take paddings into account.

1 Like

Read this post to figure out how it breaks

Honestly just seems like scaling doesn’t work that well, because I can set the offset padding to 512px and it’s still within the bounds. Though, setting the padding to a scale of 1, the final text is offscreen… but honestly nothing that can’t be fixed with really simple code. (Doesn’t really excuse the odd behavior) Though pretty sure many have gotten all three those things you listed numerous times but you just so happened to implement padding so extreme it kind of broke it? (So figured using Scale on UIListLayout & UIPadding together does this)

Showing how scale is the issue and not offset

scroller:GetPropertyChangedSignal("AbsoluteSize"):Connect(function()
    listLayout.Padding = UDim.new(0, scroller.AbsoluteSize.Y) -- // Or just scale it
end)

Regarding the sizes of the frames inside of the scrolling frame, it’s most likely do to uneven pixel count caused by scaling, pixels between .0 and .999 etc either rounded up or down.

1 Like

this is pretty helpful, but is it possible to use this to make FPS player list?

indeed, sometimes a break is necessary :smile:

1 Like

have you tried anchor points ?
its very usefull yet i see many people neglect it

Here’s a recording of me doing both of them, separately and then together

You have to use scale not offset

1 Like

read what i said in my first reply

Here’s an example:
Let there be 10 TextButtons inside a ScrollingFrame. Let the CanvasSize be automatic. Let the CanvasSize to be originally 0, which means it will match the size of the ScrollingFrame.

  • CanvasSize is initially 200 px
  • TextButton’s size is set to scale=0.5
  • TextButton’s size becomes 100 px
  • There are 10 TextButtons, so the required CanvasSize will be 1000 px excluding padding
  • CanvasSize updates to 1000 px
  • TextButton’s size also updates, now set to 500 px to match the 0.5 scale
  • There are 10 TextButtons, so the required CanvasSize now becomes 5000 px excluding padding
  • Rinse and repeat, this cycle will never stop

So instead of crashing your game because of this endless loop, it will just be hardcapped and stop somewhere, and thus appear to not work.

1 Like

you also cant get positions of frames that are affected by UIGridLayout, and if there is its by some cheesy method with math that i haven’t found out yet (the scale position not the offset, i already know how to get the offset and nobody uses offset because its trash)

congrats on triggering just about every single competent UI designer in the Roblox game development community

1 Like