Reference API Roblox

Engine API

Website

Related

Reference API Roblox

SurfaceGui

Container for GuiObjects that are rendered on the surface of a part.

Member index 12

HistoryMember
553AlwaysOnTop: bool
553Brightness: float
553CanvasSize: Vector2
553ClipsDescendants: bool
553LightInfluence: float
592MaxDistance: float
553PixelsPerStud: float
553SizingMode: SurfaceGuiSizingMode
553ToolPunchThroughDistance: float
553ZOffset: float
inherited from SurfaceGuiBase
553Active: bool
553Adornee: Instance
553Face: NormalId
inherited from LayerCollector
553Enabled: bool
553ResetOnSpawn: bool
553ZIndexBehavior: ZIndexBehavior
648GetGuiObjectsAtPosition(x: int, y: int): Instances
462GetLayoutNodeTree(): Dictionary
inherited from GuiBase2d
553AbsolutePosition: Vector2
553AbsoluteRotation: float
553AbsoluteSize: Vector2
553AutoLocalize: bool
553RootLocalizationTable: LocalizationTable
553SelectionBehaviorDown: SelectionBehavior
553SelectionBehaviorLeft: SelectionBehavior
553SelectionBehaviorRight: SelectionBehavior
553SelectionBehaviorUp: SelectionBehavior
553SelectionGroup: bool
525SelectionChanged(amISelected: bool, previousSelection: GuiObject, newSelection: GuiObject)
inherited from Instance
553Archivable: bool
635Capabilities: SecurityCapabilities
553Name: string
553Parent: Instance
635Sandboxed: bool
616UniqueId: UniqueId
576AddTag(tag: string): null
573ClearAllChildren(): null
462Clone(): Instance
573Destroy(): null
486FindFirstAncestor(name: string): Instance
486FindFirstAncestorOfClass(className: string): Instance
486FindFirstAncestorWhichIsA(className: string): Instance
486FindFirstChild(name: string, recursive: bool = false): Instance
486FindFirstChildOfClass(className: string): Instance
486FindFirstChildWhichIsA(className: string, recursive: bool = false): Instance
486FindFirstDescendant(name: string): Instance
563GetActor(): Actor
486GetAttribute(attribute: string): Variant
462GetAttributeChangedSignal(attribute: string): RBXScriptSignal
631GetAttributes(): Dictionary
648GetChildren(): Instances
462GetDebugId(scopeLength: int = 4): string
486GetDescendants(): Array
486GetFullName(): string
641GetStyled(name: string): Variant
576GetTags(): Array
576HasTag(tag: string): bool
486IsAncestorOf(descendant: Instance): bool
486IsDescendantOf(ancestor: Instance): bool
580IsPropertyModified(name: string): bool
573Remove(): null
576RemoveTag(tag: string): null
580ResetPropertyToDefault(name: string): null
573SetAttribute(attribute: string, value: Variant): null
462WaitForChild(childName: string, timeOut: double): Instance
648children(): Instances
553clone(): Instance
573destroy(): null
553findFirstChild(name: string, recursive: bool = false): Instance
648getChildren(): Instances
553isDescendantOf(ancestor: Instance): bool
573remove(): null
462AncestryChanged(child: Instance, parent: Instance)
462AttributeChanged(attribute: string)
462ChildAdded(child: Instance)
462ChildRemoved(child: Instance)
462DescendantAdded(descendant: Instance)
462DescendantRemoving(descendant: Instance)
500Destroying()
553childAdded(child: Instance)
inherited from Object
647ClassName: string
647className: string
647GetPropertyChangedSignal(property: string): RBXScriptSignal
647IsA(className: string): bool
650isA(className: string): bool
647Changed(property: string)

Removed member index 4

HistoryMember
540Active: bool
540Adornee: Instance
310Enabled: bool
540Face: 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

Members 12

AlwaysOnTop

TypeDefault
boolfalse

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:

History 4

Brightness

TypeDefault
float1

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.

History 4

CanvasSize

TypeDefault
Vector2800, 600

The size of a 'virtual screen', in 'virtual pixels', which makes SurfaceGuis pixel-to-pixel compatible with ScreenGuis.

History 5

ClipsDescendants

TypeDefault
boolfalse

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.

History 4

LightInfluence

TypeDefault
float0

Controls how much the SurfaceGui is influenced by the lighting in the game world.

History 4

MaxDistance

TypeDefault
float0

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.

History 2

PixelsPerStud

TypeDefault
float50

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.

History 4

SizingMode

TypeDefault
SurfaceGuiSizingModeFixedSize

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.

History 4

ToolPunchThroughDistance

TypeDefault
float0

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.

History 4

ZOffset

TypeDefault
float0

Offsets the SurfaceGui relative to the normal of the surface it is attached to.

History 4

Removed members 4

Active

TypeDefault
bool

History 4

Adornee

TypeDefault
Instance

History 5

Enabled

TypeDefault
bool

History 4

Face

TypeDefault
NormalId

History 4

Settings