ScreenGui.Transparency Property

Currently it is too hard to go through every GUI, figure out and store their type and transparency property and then change their transparency of the whole ScreenGui. I have parts of UI (Such as the loading screen) that I want to fade in and out while changing the transparency value. But the whole ScreenGui is composed of so many other parts that changing their own transparency as such creating a system in which I can edit transparency becomes so hard that I don’t want to fade anything with more than a couple elements.

I propose that a Transparency property should be added to ScreenGui instance. In which the actual transparency of the children that the ScreenGui inherits becomes:

t = 1-(1-T)*(1-t)

This way we can have dynamic transparency changes to the objects in the ScreenGui while fading it.

This is possible to code but the parameters that need to be considered just makes this thing far and far harder than it needs to be for simple fading effects.

As explained in this post, I understand the difficulties of shading it in and out with the occlusion supported. But the left image in what’s shown there is fine. It’s ok. That method is completely fine to use. As such, this is a different request from the original thread.


The top level GUI classes (BillboardGUI, SurfaceGUI, etc) should have a Transparency property that fades the entire GUI.

Right now I have to do:

  1. Recurse through my GUI
  2. Test if each element has a BackgroundTransparency property
  3. Set that property

This is especially annoying if the start state of my GUI has some opaque and some semi-transparent elements, because now to fade my GUI in and out I need to remember what the baselines are. Then I have to write all the interpolation code myself.

It shouldn’t be this hard.


That feeling when your post gets merged with other developers asking for the same feature 2 years ago.


I disagree with the post from the engineer saying that this feature requires a 2d compositing “engine”. This feature requires a pass in C++ that does the same thing I’m doing in Lua to achieve the same effect.

Compositing is probably easier though, to be honest.