15 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

BillboardGui

Inherits from: LayerCollector → GuiBase2d → GuiBase → Instance → Object

BillboardGui is a container for UI objects to appear in the 3D space but always face the camera. The container's position is relative to the parent BasePart or Attachment (or the Adornee). For BaseParts, the Position property is used, while for Attachments, the WorldPosition property is used.

BillboardGui with a TextLabel describing the screen console it floats above.

A billboard's Size property works slightly differently than GuiObject.Size. While the offset components work the same, the scale components are used as stud sizes in 3D space.

When creating a size-scaled BillboardGui that contains a TextLabel, it's useful to enable the label's TextScaled property so that its text scales along with the billboard canvas as the camera distance changes.

Note that interactive UI elements like ImageButtons and TextButtons inside a BillboardGui will only receive user input if they are parented to the PlayerGui, typically via placing the BillboardGui inside StarterGui. The Adornee property can be used to target a part or attachment in the 3D world while the BillboardGui itself remains in the PlayerGui.

See In-Experience UI for a guide on working with BillboardGui containers.

Caching Behavior

To help improve performance, the appearance of a BillboardGui is cached until one of the following occurs, after which its appearance will be recomputed on the next rendering frame.

Inherits from: LayerCollector

Memory category: Instances

Properties

NameType / ReturnsDescription
BillboardGui.ActivebooleanControls whether the descendants will receive input events.
BillboardGui.AdorneeInstanceSets the target part or attachment that the BillboardGui is positioned relative to.
BillboardGui.AlwaysOnTopbooleanDetermines whether the BillboardGui will always be rendered on top of other 3D objects.
BillboardGui.BrightnessfloatDetermines the factor by which the BillboardGui container's light is scaled when LightInfluence is 0.
BillboardGui.ClipsDescendantsbooleanWhether portions of GuiObjects that fall outside of the BillboardGui canvas borders will be drawn.
BillboardGui.CurrentDistancefloatThe current distance in studs that the BillboardGui is from the player's camera.
BillboardGui.DistanceLowerLimitfloatDetermines the distance in studs at which the BillboardGui will stop scaling larger in size.
BillboardGui.DistanceStepfloatDetermines the size CurrentDistance increments and decrements in studs as the player's camera moves closer and further from the BillboardGui.
BillboardGui.DistanceUpperLimitfloatDetermines the distance in studs at which the BillboardGui will stop scaling smaller in size.
BillboardGui.ExtentsOffsetVector3Determines how the BillboardGui is offset from its Adornee, relative to the Camera orientation, in units half the dimensions of the model's Camera-aligned bounding box.
BillboardGui.ExtentsOffsetWorldSpaceVector3Determines how the BillboardGui is offset from its Adornee, relative to the global axes, in units half the dimensions of the model's axis-aligned bounding box.
BillboardGui.LightInfluencefloatControls how much the BillboardGui is influenced by environmental lighting.
BillboardGui.MaxDistancefloatControls how far away the BillboardGui can be displayed before it stops rendering.
BillboardGui.PlayerToHideFromInstanceUsed by scripts to hide the BillboardGui from a specific player.
BillboardGui.SizeUDim2Controls the size that the BillboardGui will have on screen.
BillboardGui.SizeOffsetVector2A 2D offset in size-relative units that acts like an anchor point.
BillboardGui.StudsOffsetVector3Determines how the BillboardGui is offset from its Adornee in studs, relative to the Camera orientation.
BillboardGui.StudsOffsetWorldSpaceVector3Determines how the BillboardGui is offset from its Adornee in studs, relative to the global axes.

Inherited from LayerCollector

NameType / ReturnsDescription
LayerCollector.EnabledbooleanToggles the visibility of this LayerCollector.
LayerCollector.ResetOnSpawnbooleanDetermines if the LayerCollector resets (deletes itself and re-clones into the player's PlayerGui) every time the player's character respawns.
LayerCollector.ZIndexBehaviorZIndexBehaviorControls how GuiObject.ZIndex behaves on all descendants of this LayerCollector.

Inherited from GuiBase2d

NameType / ReturnsDescription
GuiBase2d.AbsolutePositionVector2Describes the actual screen position of a GuiBase2d element, in pixels.
GuiBase2d.AbsoluteRotationfloatDescribes the actual screen rotation of a GuiBase2d element, in degrees.
GuiBase2d.AbsoluteSizeVector2Describes the actual screen size of a GuiBase2d element, in pixels.
GuiBase2d.AutoLocalizebooleanWhen set to true, localization will be applied to this GuiBase2d and its descendants.
GuiBase2d.LocalizebooleanAutomatically set to true when a localization table's LocalizationTable.Root targets this object, or an ancestor of this object.
GuiBase2d.RootLocalizationTableLocalizationTableA reference to a LocalizationTable to be used to apply automated localization to this GuiBase2d and its descendants.
GuiBase2d.SelectionBehaviorDownSelectionBehaviorCustomizes gamepad selection behavior in the down direction.
GuiBase2d.SelectionBehaviorLeftSelectionBehaviorCustomizes gamepad selection behavior in the left direction.
GuiBase2d.SelectionBehaviorRightSelectionBehaviorCustomizes gamepad selection behavior in the right direction.
GuiBase2d.SelectionBehaviorUpSelectionBehaviorCustomizes gamepad selection behavior in the up direction.
GuiBase2d.SelectionGroupbooleanAllows customization of gamepad selection movement.

Inherited from Instance

NameType / ReturnsDescription
Instance.ArchivablebooleanDetermines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published.
Instance.archivableboolean
Instance.CapabilitiesSecurityCapabilitiesThe set of capabilities allowed to be used for scripts inside this container.
Instance.IsInSandboxbooleanIndicates whether the instance is inside a sandboxed container.
Instance.NamestringA non-unique identifier of the Instance.
Instance.ParentInstanceDetermines the hierarchical parent of the Instance.
Instance.PredictionModePredictionModeReflects the client-side prediction mode applied to the instance under server-authoritative physics.
Instance.RobloxLockedbooleanA deprecated property that used to protect CoreGui objects.
Instance.SandboxedbooleanWhen enabled, the instance can only access abilities in its Capabilities list.
Instance.UniqueIdUniqueIdA unique identifier for the instance.

Inherited from Object

NameType / ReturnsDescription
Object.ClassNamestringA read-only string representing the class this Object belongs to.
Object.classNamestring

BillboardGui.Active

Controls whether the descendants will receive input events. If the BillboardGui contains a GuiButton, that button will become clickable only if Active is set to true on both the BillboardGui and the button.

Note that interactive UI elements like ImageButtons and TextButtons inside a BillboardGui will only receive user input if they are parented to the PlayerGui, typically via placing the BillboardGui inside StarterGui. The Adornee property can be used to target a part or attachment in the 3D world while the BillboardGui itself remains in the PlayerGui.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.Adornee

Sets the target BasePart or Attachment that the BillboardGui is positioned relative to, overriding the parent part or attachment.

FieldValue
typeInstance
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.AlwaysOnTop

This property determines whether the BillboardGui will always render on top of other 3D objects.

When set to false (default), the BillboardGui renders like other 3D content and is occluded by other 3D objects. When set to true, the BillboardGui always renders on top of 3D content and the appearance changes significantly:

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.Brightness

This property determines the factor by which the BillboardGui container's light is scaled when LightInfluence is 0. By default, this property is 1 and can be set to any number between 0 and 1000. By modifying this property, the apparent brightness of a BillboardGui can be better matched to its environment. For instance, a video billboard can be brightened inside a dark room by increasing Brightness to 10.

Note that Brightness is inaccessible in Studio and has no effect when either LightInfluence is 1 or AlwaysOnTop is true.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.ClipsDescendants

When set to true (default), portions of GuiObjects that fall outside of the BillboardGui canvas borders will not be drawn.

Even when this property is false, GuiObjects that are completely outside of the canvas will not render.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.CurrentDistance

The current distance in studs that the BillboardGui is from the player's camera. A changed event does not fire for this property unless DistanceStep is more than 0.

FieldValue
typefloat
tags["ReadOnly","NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":false,"can_save":false}
capabilities["UI"]

BillboardGui.DistanceLowerLimit

Deprecated.

Determines the distance in studs at which the BillboardGui will stop scaling larger in size relative to the player's current camera, with a default of 0. If the CurrentDistance of the BillboardGui is below this value, it will not scale any larger than it would at this distance.

FieldValue
typefloat
tags["Deprecated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.DistanceStep

Determines the size CurrentDistance increments and decrements in studs as the player's camera moves closer and further from the BillboardGui. The property defaults to 0.

FieldValue
typefloat
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":false}
capabilities["UI"]

BillboardGui.DistanceUpperLimit

Deprecated.

Determines the distance in studs at which the BillboardGui will stop scaling smaller in size relative to the player's current camera. If the CurrentDistance of the BillboardGui is above this value, it will not scale any smaller than it would at this distance.

This property is ignored if the value is less than 0. The default value is -1, meaning the property is ignored by default.

FieldValue
typefloat
tags["Deprecated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.ExtentsOffset

This property determines how the BillboardGui is offset from its Adornee, relative to the Camera orientation, in units half the dimensions of the model's Camera-aligned bounding box.

See also StudsOffset which works similarly but uses stud units, or ExtentsOffsetWorldSpace which works similarly except the offset orientation is relative to the global axes.

FieldValue
typeVector3
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.ExtentsOffsetWorldSpace

This property determines how the BillboardGui is offset from its Adornee, relative to the global axes, in units half the dimensions of the model's axis-aligned bounding box.

See also StudsOffset which works similarly but uses stud units, or ExtentsOffset which works similarly except the offset orientation is relative to the Camera.

FieldValue
typeVector3
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.LightInfluence

Controls how much the BillboardGui is influenced by environmental lighting, in a range from 0 to 1. Setting this to 1 means that surrounding lighting has complete control over the appearance, while setting it to 0 means that the lighting has no effect.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.MaxDistance

This property controls how far from the camera the BillboardGui will be displayed before it stops rendering. A value of 0 or inf (default) means there is no limit and it will render infinitely far away.

For BillboardGuis that appear outdoors, it's recommended that MaxDistance is high enough to ensure that the container's UI is sufficiently small on the screen when it appears or disappears, minimizing the sudden pop‑in/out effect.

FieldValue
typefloat
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.PlayerToHideFrom

Used by scripts to hide the BillboardGui from a specific player.

To hide a BillboardGui from more than one player, place it into StarterGui and use a script to set the Enabled property according to whether the LocalPlayer should be able to see it. The Adornee property can be used to attach the BillboardGui to a BasePart or Attachment in the Workspace, instead of parenting it.

FieldValue
typeInstance
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.Size

Controls the size that the BillboardGui will have on screen. Unlike GuiObject.Size, the scale components of this property set the billboard's stud size in 3D space.

FieldValue
typeUDim2
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.SizeOffset

A 2D offset in size-relative units that acts like an anchor point. This can be used similarly to the GuiObject.AnchorPoint property, but the values are different.

Size Offset Explanation
0, 0 The default in which UI will be anchored at its center.
0.5, 0.5 UI will anchor at the bottom left.
0.5, -0.5 UI will anchor at the top left.
-0.5, 0.5 UI will anchor at the top right.
-0.5, -0.5 UI will anchor at the bottom right.

See also StudsOffset, StudsOffsetWorldSpace, ExtentsOffset, and ExtentsOffsetWorldSpace which are offset properties that work in 3D space instead.

FieldValue
typeVector2
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.StudsOffset

This property determines how the BillboardGui is offset from its Adornee in studs, relative to the Camera orientation.

See also StudsOffsetWorldSpace which works similarly except the offset orientation is relative to the global axes.

FieldValue
typeVector3
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

BillboardGui.StudsOffsetWorldSpace

This property determines how the BillboardGui is offset from its Adornee in studs, relative to the global axes.

See also StudsOffset which works similarly except the offset orientation is relative to the Camera.

FieldValue
typeVector3
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryData
serialization{"can_load":true,"can_save":true}
capabilities["UI"]

Methods

Inherited from LayerCollector

NameType / ReturnsDescription
LayerCollector:GetLayoutNodeTreeDictionary

Inherited from Instance

NameType / ReturnsDescription
Instance:AddTag()Applies a tag to the instance.
Instance:childrenInstancesReturns an array of the object's children.
Instance:ClearAllChildren()This method destroys all of an instance's children.
Instance:CloneInstanceCreate a copy of an instance and all its descendants, ignoring instances that are not Archivable.
Instance:cloneInstance
Instance:Destroy()Sets the Instance.Parent property to nil, locks the Instance.Parent property, disconnects all connections, and calls Destroy() on all children.
Instance:destroy()
Instance:FindFirstAncestorInstance?Returns the first ancestor of the Instance whose Instance.Name is equal to the given name.
Instance:FindFirstAncestorOfClassInstance?Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className.
Instance:FindFirstAncestorWhichIsAInstance?Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstChildInstance?Returns the first child of the Instance found with the given name.
Instance:findFirstChildInstance
Instance:FindFirstChildOfClassInstance?Returns the first child of the Instance whose ClassName is equal to the given class name.
Instance:FindFirstChildWhichIsAInstance?Returns the first child of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstDescendantInstance?Returns the first descendant found with the given Instance.Name.
Instance:GetActorActor?Returns the Actor associated with the Instance, if any.
Instance:GetAttributeVariantReturns the value which has been assigned to the given attribute name.
Instance:GetAttributeChangedSignalRBXScriptSignalReturns an event that fires when the given attribute changes.
Instance:GetAttributesDictionaryReturns a dictionary of the instance's attributes.
Instance:GetChildrenInstancesReturns an array containing all of the instance's children.
Instance:getChildrenInstances
Instance:GetDebugIdstringReturns a coded string of the debug ID used internally by Roblox.
Instance:GetDescendantsInstancesReturns an array containing all of the descendants of the instance.
Instance:GetFullNamestringReturns a string describing the instance's ancestry.
Instance:GetStyledVariantReturns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified.
Instance:GetStyledPropertyChangedSignalRBXScriptSignalReturns an event that fires when the given style property changes on the instance.
Instance:GetTagsArrayGets an array of all tags applied to the instance.
Instance:HasTagbooleanCheck whether the instance has a given tag.
Instance:IsAncestorOfbooleanReturns true if an Instance is an ancestor of the given descendant.
Instance:IsDescendantOfbooleanReturns true if an Instance is a descendant of the given ancestor.
Instance:isDescendantOfboolean
Instance:IsPropertyModifiedbooleanReturns true if the value stored in the specified property is not equal to the code-instantiated default.
Instance:QueryDescendantsInstancesReturns an array containing all descendants of the instance that match the selector string.
Instance:Remove()Sets the object's Parent to nil, and does the same for all its descendants.
Instance:remove()
Instance:RemoveTag()Removes a tag from the instance.
Instance:ResetPropertyToDefault()Resets a property to its default value.
Instance:SetAttribute()Sets the attribute with the given name to the given value.
Instance:WaitForChildInstanceReturns the child of the Instance with the given name. If the child does not exist, it will yield the current thread until it does.

Inherited from Object

NameType / ReturnsDescription
Object:GetPropertyChangedSignalRBXScriptSignalGet an event that fires when a given property of the object changes.
Object:IsAbooleanReturns true if an object's class matches or inherits from a given class.
Object:isAboolean

Events

Inherited from GuiBase2d

NameType / ReturnsDescription
GuiBase2d.SelectionChangedFires when the gamepad selection moves to, leaves, or changes within the connected GuiBase2d or any descendant GuiObjects.

Inherited from Instance

NameType / ReturnsDescription
Instance.AncestryChangedFires when the Instance.Parent property of this object or one of its ancestors is changed.
Instance.AttributeChangedFires whenever an attribute is changed on the Instance.
Instance.ChildAddedFires after an object is parented to this Instance.
Instance.childAdded
Instance.ChildRemovedFires after a child is removed from this Instance.
Instance.DescendantAddedFires after a descendant is added to the Instance.
Instance.DescendantRemovingFires immediately before a descendant of the Instance is removed.
Instance.DestroyingFires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy().
Instance.StyledPropertiesChangedFires whenever any style property is changed on the instance, including when a property is set to nil.

Inherited from Object

NameType / ReturnsDescription
Object.ChangedFires immediately after a property of the object changes, with some limitations.