Roblox UtilitiesDevlHub Roblox Documentation

Data type

UDim2

Represents a two-dimensional value where each dimension is composed of a relative scale and an absolute offset.

The UDim2 data type represents a two-dimensional value where each dimension is composed of a relative scale and an absolute offset in logical pixels. It is a combination of two UDim data types representing the X and Y dimensions. The most common usages for UDim2 are setting the Size and Position of GuiObjects.

Luau
local guiObject = Instance.new("Frame")
guiObject.Size = UDim2.new(0, 300, 1, 0)  -- 300 logical pixels wide; full height of parent
guiObject.Position = UDim2.new(0, 50, 0, 0)  -- 50 logical pixels from the left
print(guiObject.Size) --> {0, 300}, {1, 0}

Constructors 5#

newReturns a new UDim2 with the coordinates of two zero UDim components representing each axis.
newReturns a new UDim2 given the coordinates of the two UDim components representing each axis.
newReturns a new UDim2 from the given UDim objects representing the X and Y dimensions, respectively.
fromScaleReturns a new UDim2 with the given scale components and no offsets.
fromOffsetReturns a new UDim2 with the given offset components and no scaling.

new()#

Returns a new UDim2 with both dimensions set to zero — equivalent to UDim2.new(0, 0, 0, 0). All four components (X scale, X offset, Y scale, Y offset) default to 0.

new(xScale: number = 0, xOffset: number = 0, yScale: number = 0, yOffset: number = 0)#

Returns a new UDim2 from four numbers that define both axes. Each pair of arguments defines one dimension: xScale and xOffset for the horizontal (X) axis, then yScale and yOffset for the vertical (Y) axis. Scale is a relative fraction of the parent container's size (typically between 0 and 1), while offset is an absolute logical pixel value added after scaling. All parameters default to 0.

Luau
-- 50% width + 20 logical pixels padding, full height
local size = UDim2.new(0.5, 20, 1, 0)
NameTypeDefaultDescription
xScalenumber0The X dimension scale.
xOffsetnumber0The X dimension offset.
yScalenumber0The Y dimension scale.
yOffsetnumber0The Y dimension offset.

new(x: UDim, y: UDim)#

Constructs a UDim2 by composing two UDim values directly. The first argument becomes the horizontal dimension (accessible via .X or .Width) and the second becomes the vertical dimension (accessible via .Y or .Height).

Luau
local x = UDim.new(0.5, 10)
local y = UDim.new(1, 0)
local size = UDim2.new(x, y)  -- equivalent to UDim2.new(0.5, 10, 1, 0)
NameTypeDefaultDescription
xUDimThe UDim for the horizontal (X) axis.
yUDimThe UDim for the vertical (Y) axis.

fromScale(xScale: number = 0, yScale: number = 0)#

Returns a new UDim2 with the given scalar coordinates and no offsets. Equivalent to:

Luau
local xScale, yScale = 0.5, 0.25
print(UDim2.fromScale(xScale, yScale) == UDim2.new(xScale, 0, yScale, 0)) --> true
NameTypeDefaultDescription
xScalenumber0The relative scale for the horizontal (X) axis.
yScalenumber0The relative scale for the vertical (Y) axis.

fromOffset(xOffset: number = 0, yOffset: number = 0)#

Returns a new UDim2 with the given offset coordinates and no scaling. Equivalent to:

Luau
local xOffset, yOffset = 100, 50
print(UDim2.fromOffset(xOffset, yOffset) == UDim2.new(0, xOffset, 0, yOffset)) --> true
NameTypeDefaultDescription
xOffsetnumber0The absolute logical pixel offset for the horizontal (X) axis.
yOffsetnumber0The absolute logical pixel offset for the vertical (Y) axis.

Properties 4#

XUDimThe X dimension scale and offset of the UDim2.
YUDimThe Y dimension scale and offset of the UDim2.
WidthUDimThe X dimension scale and offset of the UDim2.
HeightUDimThe Y dimension scale and offset of the UDim2.

X: UDim#

The UDim component for the horizontal axis. The returned UDim has a .Scale (relative fraction) and .Offset (absolute logical pixels). This property is equivalent to UDim2.Width.

Luau
local pos = UDim2.new(0.5, 10, 1, 0)
print(pos.X.Scale)   -- 0.5
print(pos.X.Offset)  -- 10

Y: UDim#

The UDim component for the vertical axis. The returned UDim has a .Scale (relative fraction) and .Offset (absolute logical pixels). This property is equivalent to UDim2.Height.

Luau
local pos = UDim2.new(0.5, 10, 1, 0)
print(pos.Y.Scale)   -- 1
print(pos.Y.Offset)  -- 0

Width: UDim#

A synonym for UDim2.X. Returns the UDim component for the horizontal axis, containing both .Scale and .Offset.

Height: UDim#

A synonym for UDim2.Y. Returns the UDim component for the vertical axis, containing both .Scale and .Offset.

Methods 1#

LerpReturns a UDim2 interpolated linearly between the value and the given goal.

Lerp(goal: UDim2, alpha: number): UDim2#

Returns a UDim2 interpolated linearly between this UDim2 and the given goal. The alpha value should be a number between 0 and 1.

NameTypeDefaultDescription
goalUDim2The target UDim2 to interpolate toward.
alphanumberA value between 0 (returns this UDim2) and 1 (returns goal) controlling the interpolation.
Returns
  • UDim2 — A UDim2 where each axis is independently interpolated between this value and goal by the fraction alpha.

Math operations 2#

OperationDescription
UDim2 + UDim2 → UDim2Produces a UDim2 with components that are the sum of the respective components of the two UDim2 objects.
UDim2 - UDim2 → UDim2Produces a UDim2 with components that are the difference of the respective components of the two UDim2 objects.