As a Roblox developer, it is still hard to change the Transparency of multiple UI objects at once.
CanvasGroup seems to be the best way of doing this, but the way it works is horrible because it decreases the quality of the UI (low quality texture), is subject to render even worst in low-end devices, and can even render as a black texture in devices that are on memory pressure according to the documentation.
I honestly think a UIGridStyleLayout Instance would have been better rather than being limited to a new kind of Frame, because I could place it under any GuiObject and use it’s Enabled property to disable it.
If Roblox is able to address this issue, it would improve my development experience because I could use CanvasGroup all around in my project and have the CanvasGroup disabled by default and only enable it when tweening the transparency of all the GuiObjects as a workaround to performance implications.
The funny thing is that Roblox themselves know about this limitation. The new reduced motion setting uses CanvasGroups to tween the transparency of the pause menu, but they parent the ui to a CanvasGroup only when the transparency is being changed, and back to a normal frame when its done. This is the same thing I do in my game and it seems to be working well.
Full support though, would be a LOT less tedious than parenting stuff around.
Im sure there are more posts about this, but still.
I ran into this in my game as well. Someone reported that their entire screen is black, and I narrowed it down to a fullscreen canvasGroup. Making it smaller solved the issue.
I think at the very least the Roblox engine should be treating canvasgroups as clipped frames instead of pitch black squares when the user is out of memory (or at the very least render nothing).
Feels like a huge oversight since having pure blackness rendered to the screen is much more detrimental in most cases than having nothing rendered at all.
CanvasGroups are extremely blurry at low graphics qualities, and is very noticable when your trying to fade, say… a loading screen. It would be nice to be able to disable the CanvasGroup functionality at runtime.
This would probably hurt the ability to clip descendants when it’s rotated, but who cares! It’s disabled so it should be expected to work just like a frame. ClipDescendants would continue to be forced on.
Like somebody said somewhere, even the corescripts that manage settings have to work around this issue by reparenting the UI to a frame when the CanvasGroup is not fading anything.
I rarely need canvas group for purposes other than tweeting out a bunch of UI. I should be able to outright disable the functionality of this so it simply passes the content through as though it were a simple frame. The detriments of this instance being always on and the mess of parenting children out makes me not want to use it at all.