SurfaceGui
Container for GuiObjects that are rendered on the surface of a part.
Memory category | Instances |
---|
Member index 12
Removed member index 4
History | Member | |
---|---|---|
540 | Active: bool | |
540 | Adornee: Instance | |
310 | Enabled: bool | |
540 | Face: NormalId |
Description
Allows for the rendering of GUI elements onto a part's surface in the 3D world, while allowing for basic user interaction to occur. SurfaceGuis must be descendants of PlayerGui in order to know which player is interacting with it.
Caching static UI for performance improvements
A Gui's appearance is cached until one of the following events occurs:
- A descendant is added to the Gui.
- A descendant is removed from the Gui.
- A property of a descendant of the Gui changes.
- A property of the Gui changes.
If any of these events occur, the Gui's appearance will be recomputed the next frame it gets rendered.
History 60
- 592 Change Tags of MaxDistance from [NotBrowsable] to []
- 590 Add MaxDistance
- 557 Add
- 557 Add
- 553 Change Default of ZOffset from to 0
- 553 Change Default of ToolPunchThroughDistance from to 0
- 553 Change Default of SizingMode from to FixedSize
- 553 Change Default of PixelsPerStud from to 50
- 553 Change Default of LightInfluence from to 0
- 553 Change Default of ClipsDescendants from to false
- 553 Change Default of CanvasSize from to Vector2(800, 600)
- 553 Change Default of Brightness from to 1
- 553 Change Default of AlwaysOnTop from to false
- 540 Remove Face
- 540 Remove Adornee
- 540 Remove Active
- 540 Change Superclass of SurfaceGui from LayerCollector to SurfaceGuiBase
- 486 Change ThreadSafety of ZOffset from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ToolPunchThroughDistance from ReadOnly to ReadSafe
- 486 Change ThreadSafety of SizingMode from ReadOnly to ReadSafe
- 486 Change ThreadSafety of PixelsPerStud from ReadOnly to ReadSafe
- 486 Change ThreadSafety of LightInfluence from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Face from ReadOnly to ReadSafe
- 486 Change ThreadSafety of ClipsDescendants from ReadOnly to ReadSafe
- 486 Change ThreadSafety of CanvasSize from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Brightness from ReadOnly to ReadSafe
- 486 Change ThreadSafety of AlwaysOnTop from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Adornee from ReadOnly to ReadSafe
- 486 Change ThreadSafety of Active from ReadOnly to ReadSafe
- 481 Change Category of Brightness from Appearance to Data
- 480 Add Brightness
- 462 Change ThreadSafety of ZOffset from to ReadOnly
- 462 Change ThreadSafety of ToolPunchThroughDistance from to ReadOnly
- 462 Change ThreadSafety of SizingMode from to ReadOnly
- 462 Change ThreadSafety of PixelsPerStud from to ReadOnly
- 462 Change ThreadSafety of LightInfluence from to ReadOnly
- 462 Change ThreadSafety of Face from to ReadOnly
- 462 Change ThreadSafety of ClipsDescendants from to ReadOnly
- 462 Change ThreadSafety of CanvasSize from to ReadOnly
- 462 Change ThreadSafety of AlwaysOnTop from to ReadOnly
- 462 Change ThreadSafety of Adornee from to ReadOnly
- 462 Change ThreadSafety of Active from to ReadOnly
- 383 Add SizingMode
- 383 Add PixelsPerStud
- 383 Change Category of CanvasSize from Data to Sizing
- 340 Add ClipsDescendants
- 329 Change ValueType of Adornee from Object to Instance
- 310 Remove Enabled
- 291 Add LightInfluence
- 280 Add ZOffset
- 257 Add Enabled
- 258 Remove Enabled
- 241 Add AlwaysOnTop
- 152 Add ToolPunchThroughDistance
- 131 Add Face
- 131 Add Enabled
- 131 Add CanvasSize
- 131 Add Adornee
- 131 Add Active
- 131 Add SurfaceGui
Members 12
AlwaysOnTop
Type | Default | |
---|---|---|
bool | false |
Determines whether the SurfaceGui will render over top of 3D content, or be occluded by it.
When set to false, the SurfaceGui will render like other 3D content, and will be occluded by other 3D objects.
When set to true, it always renders on top of 3D content, and the appearance changes significantly:
- Colors match how they appear inside a ScreenGui.
- Text may appear sharper on high DPI devices.
- SurfaceGui.LightInfluence is treated as though it was 0.
- SurfaceGui.Brightness has no effect.
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true |
History 4
- 553 Change Default of AlwaysOnTop from to false
- 486 Change ThreadSafety of AlwaysOnTop from ReadOnly to ReadSafe
- 462 Change ThreadSafety of AlwaysOnTop from to ReadOnly
- 241 Add AlwaysOnTop
Brightness
Type | Default | |
---|---|---|
float | 1 |
Brightness determines the factor by which the GUI's emitted light is scaled. By default, this property is 1 and can be set to any number on the range [0, 1000].
By modifying this property, the apparent brightness of a GUI can be better matched to its environment. For instance, a video billboard like those found in Times Square can be made brighter to be clearly visible on a bright day.
This property won't produce any effect in the following scenarios wherein the GUI does not emit light.:
- When AlwaysOnTop is true, the color of each pixel is the color shown on-screen.
- When LightInfluence is 1, all light from the GUI is reflected from the environment instead of being emit.
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true |
History 4
- 553 Change Default of Brightness from to 1
- 486 Change ThreadSafety of Brightness from ReadOnly to ReadSafe
- 481 Change Category of Brightness from Appearance to Data
- 480 Add Brightness
CanvasSize
Type | Default | |
---|---|---|
Vector2 | 800, 600 |
The size of a 'virtual screen', in 'virtual pixels', which makes SurfaceGuis pixel-to-pixel compatible with ScreenGuis.
Thread safety | ReadSafe |
---|---|
Category | Sizing |
Loaded/Saved | true |
History 5
- 553 Change Default of CanvasSize from to Vector2(800, 600)
- 486 Change ThreadSafety of CanvasSize from ReadOnly to ReadSafe
- 462 Change ThreadSafety of CanvasSize from to ReadOnly
- 383 Change Category of CanvasSize from Data to Sizing
- 131 Add CanvasSize
ClipsDescendants
Type | Default | |
---|---|---|
bool | false |
When set to true, portions of GuiObjects that fall outside of the SurfaceGui's canvas borders will not be drawn.
Even when this property is false, objects that are completely outside of the canvas of the SurfaceGui will not render.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 4
- 553 Change Default of ClipsDescendants from to false
- 486 Change ThreadSafety of ClipsDescendants from ReadOnly to ReadSafe
- 462 Change ThreadSafety of ClipsDescendants from to ReadOnly
- 340 Add ClipsDescendants
LightInfluence
Type | Default | |
---|---|---|
float | 0 |
Controls how much the SurfaceGui is influenced by the lighting in the game world.
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true |
History 4
- 553 Change Default of LightInfluence from to 0
- 486 Change ThreadSafety of LightInfluence from ReadOnly to ReadSafe
- 462 Change ThreadSafety of LightInfluence from to ReadOnly
- 291 Add LightInfluence
MaxDistance
Type | Default | |
---|---|---|
float | 0 |
Controls how far away the SurfaceGui can be displayed before it stops rendering. A value of 0 means there is no limit, and it will render infinitely far away.
For experiences with many SurfaceGuis, it's recommended to set this to an appropriate value for each SurfaceGui. The default value when inserting a SurfaceGui in Studio is 1000, which should be fine for most usages.
For UIs that are outdoors, you should set the MaxDistance far enough away so that the UI is small on the screen when it pops out, around 10 pixels across. This makes it less noticeable when it pops in or out.
You can reduce the pop in effect even more by adding a similar looking decal underneath the SurfaceGui, or by changing the part color to match the background color of your UI.
For indoor spaces, the MaxDistance should be set slightly larger than the size of the room, so that the UI won't render when the player is in a different room.
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true |
History 2
- 592 Change Tags of MaxDistance from [NotBrowsable] to []
- 590 Add MaxDistance
PixelsPerStud
Type | Default | |
---|---|---|
float | 50 |
PixelsPerStud determines the density of pixels used for each world-space stud to render the contents of the SurfaceGui.
Higher values will cause the various GuiObject within to appear smaller if they are kept the same size. Conversely, lower values will cause objects to appear larger. However, if the GuiObjects are scaled proportionally (either by using a UIScale or modifying Size or TextLabel.TextSize etc.), this property allows for higher definition to be used. It's important to select a value based on how far away you expect a player to view the SurfaceGui. Be mindful that a large pixel density could negatively affect performance if the face of the adorned part is large enough.
Thread safety | ReadSafe |
---|---|
Category | Sizing |
Loaded/Saved | true |
History 4
- 553 Change Default of PixelsPerStud from to 50
- 486 Change ThreadSafety of PixelsPerStud from ReadOnly to ReadSafe
- 462 Change ThreadSafety of PixelsPerStud from to ReadOnly
- 383 Add PixelsPerStud
SizingMode
Type | Default | |
---|---|---|
SurfaceGuiSizingMode | FixedSize |
When set to SurfaceGuiSizingMode.FixedSize, SurfaceGui renders with a fixed size set using SurfaceGui.CanvasSize.
When set to SurfaceGuiSizingMode.PixelsPerStud, SurfaceGui renders with a variable size based on SurfaceGui.PixelsPerStud and the SurfaceGui's size in studs.
Thread safety | ReadSafe |
---|---|
Category | Sizing |
Loaded/Saved | true |
History 4
- 553 Change Default of SizingMode from to FixedSize
- 486 Change ThreadSafety of SizingMode from ReadOnly to ReadSafe
- 462 Change ThreadSafety of SizingMode from to ReadOnly
- 383 Add SizingMode
ToolPunchThroughDistance
Type | Default | |
---|---|---|
float | 0 |
Sets the distance left clicking starts acting on the surface gui instead of the held tool. If a character is within this distance of the surface gui, then the tool will not activate on click.
Thread safety | ReadSafe |
---|---|
Category | Data |
Loaded/Saved | true |
History 4
- 553 Change Default of ToolPunchThroughDistance from to 0
- 486 Change ThreadSafety of ToolPunchThroughDistance from ReadOnly to ReadSafe
- 462 Change ThreadSafety of ToolPunchThroughDistance from to ReadOnly
- 152 Add ToolPunchThroughDistance
ZOffset
Type | Default | |
---|---|---|
float | 0 |
Offsets the SurfaceGui relative to the normal of the surface it is attached to.
Thread safety | ReadSafe |
---|---|
Category | Appearance |
Loaded/Saved | true |