Class
AvatarCreationService
NotCreatableService
A service to support developer avatar creators.
AvatarCreationService is a service that supports developer avatar creators,
providing methods that support the prompting of avatar creation from within
experiences.
Methods 15#
| AutoSetupAvatarAsync | Automatically sets up a custom Model and/or avatar accessories.Yields |
| GenerateAvatar2DPreviewAsync | Creates a 2D avatar preview and returns a previewId.Yields |
| GenerateAvatarAsync | Generates an avatar and returns a generationId.Yields |
| GetBatchTokenDetailsAsync | Gets the avatar creation token details for a list of avatar creation tokens at once.Yields |
| GetValidationRules | Gets data regarding rules that assets must abide by to pass UGC validation.CustomLuaState |
| LoadAvatar2DPreviewAsync | Load an AvatarGeneration 2D preview on the client from a previewId.Yields |
| LoadGeneratedAvatarAsync | Loads a generated avatar using an avatar generation ID.Yields |
| PrepareAvatarForPreviewAsync | Prepares in-experience avatar for preview.Yields |
| PromptCreateAvatarAssetAsync | Prompts a Player to purchase and create an avatar asset from an
Instance.Yields |
| PromptCreateAvatarAsync | Prompts a Player to purchase and create an avatar from a
HumanoidDescription.Yields |
| PromptSelectAvatarGenerationImageAsync | Prompt the Player to take a selfie and return the FileId.Yields |
| RequestAvatarGenerationSessionAsync | Request an AvatarGeneration session for a Player.Yields |
| ValidateUGCAccessoryAsync | Studio only. Runs UGC validation for an AccessoryType.Yields |
| ValidateUGCBodyPartAsync | Studio only. Runs UGC validation for an BodyPart.Yields |
| ValidateUGCFullBodyAsync | Studio only. Runs UGC validation for a whole body.Yields |
AutoSetupAvatarAsync(player: Player, autoSetupParams: Dictionary, progressCallback: Function?): string#
Yields
Automatically sets up a custom Model as an avatar asset. This
method returns a string generation ID which can be passed to
LoadGeneratedAvatarAsync()
to load the generated avatar and return a HumanoidDescription with
all the generated instances and properties. The load method can be called
on both the server and client, allowing the generated avatar to be loaded
in both places (on the client for previewing, and on the server for saving
the generated avatar to the player's inventory using
PromptCreateAvatarAsync()).
Auto-setup has specific model requirements and accepts certain configurations of models. For more information, see Auto-setup requirements.
Note: this API requires the Enable Mesh / Image APIs setting to be
turned on under Content Settings for your experience.
| Name | Type | Default | Description |
|---|---|---|---|
player | Player | The Player that the avatar is being set up for. | |
autoSetupParams | Dictionary | A table containing the arguments. Type:
type AutoSetupAccessory = { AccessoryType: Enum.AccessoryType, IsLayered: bool, Instance: Model, } type AutoSetupParams = { Body: Model?, Accessories: {AutoSetupAccessory}, } | |
progressCallback | Function? | Optional callback function that will be invoked periodically with a
progressInfo table with the overall progress (from 0 to 1). Type:
(progressInfo: { Progress: number }) -> () |
Returns
string— A unique identifier for the generated avatar.
GenerateAvatar2DPreviewAsync(avatarGeneration2dPreviewParams: Dictionary, progressCallback: Function?): string#
Yields
Creates a 2D avatar image preview, taking as input the FileId from
PromptSelectAvatarGenerationImageAsync()
and an optional text prompt. It returns a previewId which can be passed
to
LoadAvatar2DPreviewAsync()
to retrieve the preview image on the client. This API can only be used on
the game server.
Note: this API requires the Enable Mesh / Image APIs setting to be
turned on under Content Settings for your experience.
| Name | Type | Default | Description |
|---|---|---|---|
avatarGeneration2dPreviewParams | Dictionary | A table of arguments for 2D preview generation. Type:
avatarGeneration2dPreviewParams: {SessionId: string, FileId: string, TextPrompt: string?} | |
progressCallback | Function? | Optional callback function that will be invoked periodically with a
progressInfo table with the overall progress (from 0 to 1). Type:
(progressInfo: { Progress: number }) -> () |
Returns
string— A string previewId
GenerateAvatarAsync(avatarGenerationParams: Dictionary, progressCallback: Function?): string#
Yields
Generate an avatar from a preview and return the generationId. The
LoadGeneratedAvatarAsync()
method is then called to retrieve the generated
HumanoidDescription avatar. This API can only be used on the game
server.
Note: this API requires the Enable Mesh / Image APIs setting to be
turned on under Content Settings for your experience.
| Name | Type | Default | Description |
|---|---|---|---|
avatarGenerationParams | Dictionary | A table of arguments for generating an avatar. Type:
avatarGenerationParams: {SessionId: string, PreviewId: string} | |
progressCallback | Function? | Optional callback function that will be invoked periodically with a
progressInfo table with the overall progress (from 0 to 1). Type:
(progressInfo: { Progress: number }) -> () |
Returns
string— A string generationId.
GetBatchTokenDetailsAsync(tokenIds: Array): Array#
Yields
Gets the avatar creation token details for a list of avatar creation tokens at once (tokens are generated through the token creation process). Returns an array of avatar creation token details; each token detail is a dictionary with the fields indicated in the example result below:
{
["Name"] = "string",
["Description"] = "string",
["UniverseId"] = 0,
["CreatorId"] = 0,
["CreatorType"] = Enum.CreatorType.User,
["OnSale"] = true,
["Price"] = 0,
["OffSaleReasons"] = {
"string",
}
}| Name | Type | Default | Description |
|---|---|---|---|
tokenIds | Array | The list of avatar creation token IDs to get details of. |
Returns
Array— Array of avatar creation token details as outlined above.
GetValidationRules(): Dictionary#
CustomLuaState
Gets data regarding rules that assets must abide by to pass UGC validation. Validation is an essential step before creating avatars and there are various checks that occur, including mesh triangle limits, texture sizes, body part size limits, attachment positions, and more.
The returned dictionary of validation rules takes the following form:
{
["MeshRules"] = {
["BodyPartMaxTriangles"] = {
Enum.AssetType.DynamicHead: number,
Enum.AssetType.LeftArm: number,
Enum.AssetType.RightArm: number,
Enum.AssetType.Torso: number,
Enum.AssetType.LeftLeg: number,
Enum.AssetType.RightLeg: number,
},
["AccessoryMaxTriangles"]: number,
["MeshVertColor"]: Color3,
["CageMeshMaxDistanceFromRenderMesh"]: number,
},
["TextureRules"] = {
["MaxTextureSize"]: number,
},
["BodyPartRules"] = {
[Enum.AssetType.DynamicHead] = {
["Bounds"] = {
["Classic"] = {
["MinSize"]: Vector3,
["MaxSize"]: Vector3,
},
["ProportionsSlender"] = {
["MinSize"]: Vector3,
["MaxSize"]: Vector3,
},
["ProportionsNormal"] = {
["MinSize"]: Vector3,
["MaxSize"]: Vector3,
},
},
["SubParts"] = {
["Head"] = {
["NeckRigAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["FaceFrontAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["HatAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["HairAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["FaceCenterAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
},
},
},
[Enum.AssetType.LeftArm] = {
["Bounds"] = {
["Classic"] = {
["MinSize"]: Vector3,
["MaxSize"]: Vector3,
},
["ProportionsSlender"] = {
["MinSize"]: Vector3,
["MaxSize"]: Vector3,
},
["ProportionsNormal"] = {
["MinSize"]: Vector3,
["MaxSize"]: Vector3,
},
},
["SubParts"] = {
["LeftHand"] = {
["LeftWristRigAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["LeftGripAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
},
["LeftUpperArm"] = {
["LeftShoulderRigAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["LeftShoulderAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["LeftElbowRigAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
},
["LeftLowerArm"] = {
["LeftElbowRigAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
["LeftWristRigAttachment"] = {
["LowerBound"]: Vector3,
["UpperBound"]: Vector3,
},
},
},
},
...
},
["AccessoryRules"] = {
[Enum.AssetType.HairAccessory] = {
["Attachments"] = {
{
["Size"]: Vector3,
["Offset"]: Vector3,
["Name"]: string,
},
},
["RigidAllowed"]: boolean,
},
...
},
["MakeupRules"] = {
["ReferenceCageMeshId"]: number,
["WrapTextureTransferUVBounds"] = {
["MinBound"]: Vector2,
["MaxBound"]: Vector2,
},
["ExcludeUVBounds"] = {
[Enum.AssetType.FaceMakeup] = {
["LeftEye"] = {
["MinBound"]: Vector2,
["MaxBound"]: Vector2,
},
["RightEye"] = {
["MinBound"]: Vector2,
["MaxBound"]: Vector2,
},
["Lips"] = {
["MinBound"]: Vector2,
["MaxBound"]: Vector2,
},
},
},
["IncludeUVBounds"] = {
[Enum.AssetType.LipMakeup] = {
["MinBound"]: Vector2,
["MaxBound"]: Vector2,
},
[Enum.AssetType.EyeMakeup] = {
["MinBound"]: Vector2,
["MaxBound"]: Vector2,
},
}
}
}Returns
Dictionary— Dictionary of validation rules as detailed above.
LoadAvatar2DPreviewAsync(previewId: string): EditableImage#
Yields
Load an AvatarGeneration 2D preview as an EditableImage on the
client for the given previewId. This API can only be used on the client.
Note: this API requires the Enable Mesh / Image APIs setting to be
turned on under Content Settings for your experience.
| Name | Type | Default | Description |
|---|---|---|---|
previewId | string | Load the preview generated from
GenerateAvatar2DPreviewAsync(). |
Returns
EditableImage— AnEditableImagecontaining the preview image.
LoadGeneratedAvatarAsync(generationId: string): HumanoidDescription#
Yields
Loads a generated avatar using an avatar generation ID, as returned by
AutoSetupAvatarAsync()
or
GenerateAvatarAsync().
The generated avatar will be returned as a HumanoidDescription
with all the generated instances and properties. Mesh and texture assets
will be provided as EditableMesh and EditableImage
objects, respectively, to allow continued editing of the generated avatar.
This method can be called on both the server and client, allowing the
generated avatar to be loaded in both places (on the client for
previewing, and on the server for saving the generated avatar to the
player's inventory using
PromptCreateAvatarAsync()).
Once the method has been invoked on both the client and server, the data
associated with the generation ID will be erased and subsequent calls to
his method with the same generation ID will fail.
Note: this API requires the Enable Mesh / Image APIs setting to be
turned on under Content Settings for your experience.
| Name | Type | Default | Description |
|---|---|---|---|
generationId | string | A unique string that identifies the generated avatar, as returned by
AutoSetupAvatarAsync(). |
Returns
HumanoidDescription— TheHumanoidDescriptionof the generated avatar, which includes all the generated instances and properties.
PrepareAvatarForPreviewAsync(humanoidModel: Model): ()#
Yields
Triggers HSR generation and attachment point updating for in-experience
avatar previews. This allows for previewing of avatars created in
experience with layered clothing and accessories in the same way they will
appear when published through
PromptCreateAvatarAsync().
When developers use EditableMesh and WrapDeformer to
modify avatars before publishing, the original HSR data may not accurately
account for the new deformations. This method generates updated HSR data
and corrects attachment points based on the WrapDeformer
modifications, ensuring consistent preview and published avatar
appearance.
| Name | Type | Default | Description |
|---|---|---|---|
humanoidModel | Model | The Model containing MeshPart children with
WrapDeformer instances that require HSR data updating for
preview. |
Returns
()— void
PromptCreateAvatarAssetAsync(tokenId: string, player: Player, assetInstance: Instance, assetType: AvatarAssetType): Tuple#
Yields
Prompts a Player to purchase and create an avatar asset from an
Instance. The price of the creation is dictated by the price
attributed to the avatar creation token. This creation token is required
for the purchasing and creation of the asset and can be generated by
following the
token creation
process.
For avatar asset creation, the Instance is expected to include a
new accessory to be created. This includes the following types:
Hat, Hair,
FaceAccessory,
NeckAccessory,
ShoulderAccessory,
FrontAccessory,
BackAccessory,
WaistAccessory,
TShirtAccessory,
ShirtAccessory,
PantsAccessory,
JacketAccessory,
SweaterAccessory,
ShortsAccessory,
DressSkirtAccessory.
To support this, the Instance should be an Accessory
instance or contain an Accessory child instance. This should
include a MeshPart child instance which makes up the accessory.
The avatar asset MeshPart will also need to include:
- An
EditableImage. - An
EditableMesh.
If creating a layered clothing accessory such as a shirt, the
MeshPart should include a WrapDeformer with an
EditableMesh.
Finally, the provided AvatarAssetType should match the creation
type of the token and the type of Accessory for upload.
| Name | Type | Default | Description |
|---|---|---|---|
tokenId | string | The ID of a creation token. The token must be valid in that the
universe the method is called from is the same universe the token was
created for. Furthermore, the token creator must maintain ID
verification and
Roblox Premium. To create
a token for utilization in this API, follow the
token creation
process. The token's creation type must match the
AvatarAssetType passed in to the method. | |
player | Player | The Player intended to be presented with the creation prompt. | |
assetInstance | Instance | The Instance of the avatar asset intended for creation. | |
assetType | AvatarAssetType | The AvatarAssetType of the expected creation. This must match
the creation type of the provided token. |
Returns
Tuple—A tuple containing, in order:
An
PromptCreateAssetResultindicating the result of the creation prompt.A string result. In the case of
PromptCreateAssetResult.Success, this will indicate the asset ID. In the case of any failure enum, this will indicate the resultant error message.
PromptCreateAvatarAsync(tokenId: string, player: Player, humanoidDescription: HumanoidDescription): Tuple#
Yields
Prompts a Player to purchase and create an avatar from a
HumanoidDescription. The price of the creation is dictated by the
price attributed to the avatar creation token. This avatar creation token
is required for the purchasing and creation of the body and can be
generated by following the
token creation
process.
For avatar creation, the HumanoidDescription is expected to
include new assets to be created for each of the 6 body parts
(Head, Torso,
RightLeg, LeftLeg,
RightArm, LeftArm).
Optionally, it can also include a new Hair
accessory.
To support this, the HumanoidDescription should include 6
BodyPartDescription children (one for each body part). For each,
the BodyPartDescription.Instance property references a
Folder which includes all of the MeshPart instances which
make up the body part, for example a LeftArm folder which has
LeftHand, LeftUpperArm, and LeftLowerArm MeshParts.
The BodyPartDescription.BodyPart property should also be set to
the relevant BodyPart.
Each body part MeshPart will also need to include:
- An
EditableImage. - A
WrapDeformerwith anEditableMesh.
If including an accessory such as hair, the HumanoidDescription
should include a child AccessoryDescription where:
- The
AccessoryDescription.Instanceproperty references theAccessoryinstance. - The
AccessoryDescription.AccessoryTypeproperty is set to the relevantAccessoryType.
Finally, the HumanoidDescription should include the humanoid
scales of BodyTypeScale,
HeadScale,
HeightScale,
WidthScale, and
ProportionScale. Be mindful of
the scales that a base body is imported with so that they match the scales
provided to the HumanoidDescription.
| Name | Type | Default | Description |
|---|---|---|---|
tokenId | string | The ID of an avatar creation token. The token must be valid in that the universe the method is called from is the same universe the token was created for. Furthermore, the token creator must maintain ID verification and Roblox Premium. To create a token for utilization in this API, follow the token creation process. | |
player | Player | The Player intended to be presented with the creation prompt. | |
humanoidDescription | HumanoidDescription | The HumanoidDescription of the avatar intended for creation. |
Returns
Tuple—A tuple containing, in order:
An
PromptCreateAvatarResultindicating the result of the creation prompt.A string result. In the case of
PromptCreateAvatarResult.Success, this will indicate the bundle ID. In the case of any failure enum, this will indicate the resultant error message.A secondary optional string result. In the case of
PromptCreateAvatarResult.Success, this will indicate the outfit ID. In the case of any failure enum, this will benil.
PromptSelectAvatarGenerationImageAsync(player: Player): string#
Yields
Prompt the Player to take a selfie and return the FileId of the
selfie. This FileId is then passed as an argument to
GenerateAvatar2DPreviewAsync().
This API can only be used on the game server.
local AvatarCreationService = game:GetService("AvatarCreationService")
function promptSelectAvatarGenerationImage(player)
local pcallSuccess, result = pcall(function()
return AvatarCreationService:PromptSelectAvatarGenerationImageAsync(player)
end)
if not pcallSuccess then
errName, errDesc = unpack(string.split(result, ": "))
if errName == "SelfieConsentDenied" then
warn("Player must accept consent to use feature.")
else
warn("Failed to prompt for image: ", errDesc)
end
end
return result
endOn failure, the result string has the format
ErrorName: Error description, allowing the error type to be identified
programmatically.
| Error name | Error description |
|---|---|
SelfieConsentDenied |
Selfie consent not accepted |
QRTooManyRequests |
Failure to generate QR url due to too many requests; please wait and try again later |
MediaPermissionsDenied |
Permissions not granted for taking photo |
FeatureUnavailable |
Feature not available for player |
GenerationInProgress |
Generation already in progress for player |
Returns
string— A string FileId of the selfie on success, or an error string describing the reason for failure.
RequestAvatarGenerationSessionAsync(player: Player, callback: Function): Tuple#
Yields
Request an AvatarGeneration session for a Player. Information
about the session is returned via the callback, including the SessionId
which is passed to the
GenerateAvatar2DPreviewAsync()
and
GenerateAvatarAsync()
methods. Additional session information includes allowed 2d preview
generations, allowed 3d avatar generations, and the session time. The
method returns a Tuple with an RBXScriptConnection and
estimated waitTime. The RBXScriptConnection allows canceling
a session request. The estimated waitTime is used to provide the player
an estimated time in seconds until the session will be ready. This API can
only be used on the game server.
| Name | Type | Default | Description |
|---|---|---|---|
player | Player | The Player to request an AvatarGeneration session for. | |
callback | Function | Callback function that is invoked with a SessionInfo table, with
information about the session. Type:
(SessionInfo: { SessionId: string, Allowed2DGenerations: number, Allowed3DGenerations: number, SessionTime: number }) -> () |
Returns
Tuple— A tuple containing aRBXScriptConnectionthat can be used to cancel the session request and the estimated wait time in seconds.
ValidateUGCAccessoryAsync(player: Player, accessory: Instance, accessoryType: AccessoryType): Tuple#
Yields
Studio only. Given a Player and Instance for an
AccessoryType, determines if UGC validation passes.
| Name | Type | Default | Description |
|---|---|---|---|
player | Player | The Player validation is completed for. | |
accessory | Instance | The instance validation is run on. | |
accessoryType | AccessoryType | The AccessoryType the instance is expected to be. |
Returns
Tuple—A tuple containing, in order:
- A boolean indicating if validation was successful for the accessory.
- An optional table of strings. This includes failure reasons if
validation was unsuccessful; otherwise
nilif validation was successful.
ValidateUGCBodyPartAsync(player: Player, instance: Instance, bodyPart: BodyPart): Tuple#
Yields
Studio only. Given a Player and Instance for an
BodyPart, determines if UGC validation passes. The instance
parameter is expected as a Folder in the following example format
with relevant MeshParts:
LeftArm(Folder)
However, if the expected bodyPart is BodyPart.Head, the function
takes a singular Head MeshPart directly.
| Name | Type | Default | Description |
|---|---|---|---|
player | Player | The Player validation is completed for. | |
instance | Instance | The instance validation is run on. | |
bodyPart | BodyPart | BodyPart the instance is expected to be. |
Returns
Tuple—A tuple containing, in order:
- A boolean indicating if validation was successful for the body part.
- An optional table of strings. This includes failure reasons if
validation was unsuccessful; otherwise
nilif validation was successful.
ValidateUGCFullBodyAsync(player: Player, humanoidDescription: HumanoidDescription): Tuple#
Yields
Studio only. Given a Player and HumanoidDescription, all
instances in the HumanoidDescription will be validated.
The HumanoidDescription is expected to include instances set on
BodyPartDescription children for each of the six required
BodyPart values. Optionally, it can include instances set on
AccessoryDescription children for any supported
AccessoryType.
| Name | Type | Default | Description |
|---|---|---|---|
player | Player | The Player validation is completed for. | |
humanoidDescription | HumanoidDescription | HumanoidDescription representing the body that validation is
run on. |
Returns
Tuple—A tuple containing, in order:
- A boolean indicating if validation was successful for the body.
- An optional table of strings. This includes failure reasons if
validation was unsuccessful; otherwise
nilif validation was successful.
Events 3#
| AvatarAssetModerationCompleted | Fires when an in-experience-created avatar asset's moderation status has been updated from pending. |
| AvatarModerationCompleted | Fires when an in-experience-created avatar's moderation status has been updated from pending.Deprecated |
| AvatarOutfitModerationCompleted | Fires on the client when moderation completes for an in-experience-created outfit. |
AvatarAssetModerationCompleted(assetId: int64, moderationStatus: ModerationStatus)#
Fires when an in-experience-created avatar asset's moderation status has
been updated from pending. This event provides a streamlined way to know
when an avatar asset created through
PromptCreateAvatarAssetAsync()
has completed the moderation process and is ready for use in-experience.
Note that this event only fires for avatar assets created within the
current experience and will trigger when the ModerationStatus
changes from NotReviewed to any other
status. The event fires on the client only.
| Name | Type | Default | Description |
|---|---|---|---|
assetId | int64 | The asset ID of the asset that has completed moderation. | |
moderationStatus | ModerationStatus | The final ModerationStatus result after moderation completed. |
AvatarModerationCompleted(outfitId: int64, moderationStatus: ModerationStatus)#
Deprecated
Deprecated. This event is deprecated. Use
AvatarCreationService.AvatarOutfitModerationCompleted instead; the
replacement event supports avatar outfits and other in-experience-created
outfit types.
Fires when an in-experience-created avatar's moderation status has been
updated from pending. This event provides a streamlined way to know when
an avatar created through
PromptCreateAvatarAsync()
has completed the moderation process and is ready for use in-experience.
Note that this event only fires for avatars created within the current
experience and will trigger when the ModerationStatus changes from
NotReviewed to any other status. The
event fires on the client only.
GetOutfitDetailsAsync
can be used on the server to verify the current moderation status if
needed.
| Name | Type | Default | Description |
|---|---|---|---|
outfitId | int64 | The outfit ID of the avatar that has completed moderation. | |
moderationStatus | ModerationStatus | The final ModerationStatus result after moderation completion. |
AvatarOutfitModerationCompleted(outfitId: int64, moderationStatus: ModerationStatus, outfitType: OutfitType)#
Fires on the client when an in-experience-created outfit's moderation
status changes from NotReviewed to
another status. Use this event for any in-experience-created outfit type.
Current outfit creation flows include
PromptCreateAvatarAsync().
Future in-experience outfit types will use this event as well
(AvatarModerationCompleted
is deprecated).
Use outfitType to determine the kind of outfit that completed
moderation. This event is informational: an outfit cannot be used until
its moderation status permits it.
| Name | Type | Default | Description |
|---|---|---|---|
outfitId | int64 | The outfit ID of the outfit that has completed moderation. | |
moderationStatus | ModerationStatus | The final ModerationStatus result after moderation completion. | |
outfitType | OutfitType | The OutfitType of the moderated outfit. |
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild