I think a good solution to that would be to have a read-only property that represents whether UI blur effects are enabled or not. On low graphics settings and lower-end mobile devices, UI blur could be disabled, but it could be enabled on higher graphics settings and more powerful devices.
Developers could account for this by setting the transparency of UI objects using that property. This could be done by connecting to the GetPropertyChangedSignal of the new property, and changing transparency for each of the UI elements.
Here is an example of how this would work:
local playerGui = game:GetService("Players").PlayerGui
local blurFrames = {} -- add all of the frames with UI blur in here
local function onBlurEnabledChanged()
local enabled = playerGui.UIBlurEnabled
local transparency = enabled and 0.5 or 0
-- if blur is enabled, make background transparent so blur can be seen
-- if disabled, make background solid so that text is legible
for i, v in pairs(blurFrames) do
v.BackgroundTransparency = transparency
end
end
onBlurEnabledChanged() -- setup
playerGui:GetPropertyChangedSignal("UIBlurEnabled"):Connect(onBlurEnabledChanged)
This is fairly simple for scripters to do, but would solve the problem of the game being unplayable without UI blur.




