Roblox started to lag after I resized a frame. (The lag is too bad to record videos). I update the size of the frame every time the screen size changes. If you need any more info please ask, I don’t really know what else to put in. It’s a scripting problem, not UI design I think. That’s why its in Scripting Support.
We can’t help you if you don’t show us the code.
The codes messy and I used Roblox TS. But here
This is the code that find and sets the size. Its run everytime workspace.CurrentCamera:GetPropertyChangedSignal("ViewportSize")
is fired
local function FindSize(Ratio, Padding)
local _0 = Workspace.CurrentCamera
if _0 ~= nil then
_0 = _0.ViewportSize
end
local CameraSize = _0
if CameraSize then
if CameraSize.X >= CameraSize.Y then
-- X Bigger
local Y = (CameraSize.Y - 36) - Padding * 2
local X = Ratio * Y
return UDim2.new(0, X, 0, Y)
else
-- Y Bigger
local X = (CameraSize.X) - Padding * 2
local Y = X / Ratio
return UDim2.new(0, X, 0, Y)
end
end
return UDim2.new(0, 0, 0, 0)
end
local function UpdateSize(setSize)
local Camera = Workspace.CurrentCamera
local _0 = Camera
if _0 ~= nil then
_0 = _0:GetPropertyChangedSignal("ViewportSize"):Connect(function()
local Size = FindSize(BackgroundRatio, BackgroundPadding)
setSize(Size)
print("Updating size: " .. tostring(Size))
end)
end
end
Again I use roblox ts and Roact so its very messy
I think its because you do not have a debounce so it could fire a-lot of times.
I thought I should put one in, but ended up not doing so cause I thought it would cause “Fake lag” which is basically just a small delay
Updating size: {0, 933}, {0, 600} (x32)
Updating size: {0, 930}, {0, 598} (x64)
Updating size: {0, 924}, {0, 594} (x128)
Updating size: {0, 910}, {0, 585} (x256)
Updating size: {0, 893}, {0, 574} (x512)
Updating size: {0, 849}, {0, 546} (x1024)
Updating size: {0, 790}, {0, 508} (x2048)
Now with the debounce theres a weird parttern in the output. The amount of times Updating size is printed doubles. I found a solution i think but I just wanted to post this cause it looks neat
Does it lag the game or no? You can delay the time needed aswell.
I found that setting the size causes the lag, not finding it. So instead of having a boolean debounce, I set it to the current size then check if the debouce is equal to the size im changing to and if it is dont do anything. That wasnt very well worded so heres an example
local Debounce = UDim2.new(0,0,0,0)
function UpdateSize()
local Size = FindSize() -- Finding the size dosnt cause lag
if (Size ~= Debounce) then -- Make sure the size isnt the same
Debounce = Size
SetSize(Size) -- Setting the size causes lag so I want to minimize this
end
end
This works suprisingly well. I have no clue how I didnt see this before!