SurfaceGui

Show Deprecated

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.

Summary

Properties

Determines whether the SurfaceGui will always be rendered on top of other 3D objects.

Determines the factor by which the GUI's light is scaled when LightInfluence is 0.

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

When set to true, portions of GuiObjects that fall outside of the SurfaceGui's canvas borders will not be drawn.

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

Determines the number of screen-space pixels per world-space stud used to render the contents of the SurfaceGui.

Determines whether SurfaceGui will render at fixed size or scale with its size in studs.

Sets the distance left clicking starts acting on the surface gui instead of the held tool.

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

Events

Methods

Properties

AlwaysOnTop

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:

Brightness

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.

CanvasSize

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

ClipsDescendants

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.

LightInfluence

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

PixelsPerStud

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.

Three parts with SurfaceGuis, each including a 200x50 TextLabel within them. From left-to-right, their PixelsPerStud values are 25, 50 and 75. These values cause the apparent size of each TextLabel to change.

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.

ToolPunchThroughDistance

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.

ZOffset

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

Events

Methods