Skip to content


A UIControl for a button which allows players to register for an event within a game. Similar to UIButton, but designed to present a consistent experience for players across all games. Inherits from UIControl.


Property Name Return Type Description Tags
isInteractable boolean Returns whether the button can interact with the cursor (click, hover, etc). Read-Write
eventId string Returns the ID of the event for which this button is currently configured. This ID can be found in the creator dashboard or using the property of an event returned from various CorePlatform functions. Read-Write
isHittable boolean When set to true, this control can receive input from the cursor and blocks input to controls behind it. When set to false, the cursor ignores this control and can interact with controls behind it. Read-Write


Function Name Return Type Description Tags
GetCurrentTouchIndex() integer Returns the touch index currently interacting with this button. Returns nil if the button is not currently being interacted with. Client-Only


Event Name Return Type Description Tags
clickedEvent Event<UIEventRSVPButton> Fired when button is clicked. This triggers on mouse-button up, if both button-down and button-up events happen inside the button hitbox. None
pressedEvent Event<UIEventRSVPButton> Fired when button is pressed. (mouse button down) None
releasedEvent Event<UIEventRSVPButton> Fired when button is released. (mouse button up) None
hoveredEvent Event<UIEventRSVPButton> Fired when button is hovered. None
unhoveredEvent Event<UIEventRSVPButton> Fired when button is unhovered. None


Example using:


In this example, a client script controls a UI that prompts players to join (RSVP) an upcoming game event. In case the player has already registered for the event, then the UI does not show. The UI is populated with information about the event, such as name and description. Also, the RSVP Button must be given the game event's id in order to connect correctly with the platform service. The UI becomes hidden when the RSVP or Close buttons are clicked.

local GAME_ID = "a3040c7ff0ca4a148d98191c701afe9a"

local UI_ROOT = script:GetCustomProperty("UIContainer"):WaitForObject()
local CLOSE_BUTTON = script:GetCustomProperty("UIButton"):WaitForObject()
local UI_EVENT_NAME = script:GetCustomProperty("UITextBox"):WaitForObject()
local UI_EVENT_DESCRIPTION = script:GetCustomProperty("UITextBox_1"):WaitForObject()
local RSVP_BUTTON = script:GetCustomProperty("UIEventRSVPButton"):WaitForObject()

local player = Game.GetLocalPlayer()

function ShowUI()
    UI_ROOT.visibility = Visibility.INHERIT

function HideUI()
    UI_ROOT.visibility = Visibility.FORCE_OFF

function UpdateContents(eventData)
    UI_EVENT_NAME.text =
    UI_EVENT_DESCRIPTION.text = eventData.description
    RSVP_BUTTON.eventId =

function EvaluateUpcomingEvent()
    local collection = CorePlatform.GetGameEventsForGame(GAME_ID)
    for i, eventData in ipairs(collection:GetResults()) do
        if eventData.state == CoreGameEventState.SCHEDULED
        and not CorePlatform.IsPlayerRegisteredForGameEvent(player, eventData) then



See also: CoreGameEventCollection.GetResults | CorePlatform.GetGameEventsForGame | CoreGameEvent.state | CoreGameEventState | UIButton.clickedEvent | UIText.text | CoreObject.GetCustomProperty


UI in Core

Last update: May 3, 2022