AvatarCreationService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
AvatarCreationService est un service qui soutient les créateurs d'avatars développeurs, en fournissant des méthodes qui supportent l'invitation à la création d'avatar à partir des expériences.
Résumé
Méthodes
Obtient des données relatives aux règles auxquelles les ressources doivent adhérer pour passer la validation UGC.
Obtient les détails du jeton de création d'avatar pour une liste de jetons de création d'avatar à la fois.
- PromptCreateAvatarAsync(tokenId : string,player : Player,humanoidDescription : HumanoidDescription):Tuple
Demande à un Player d'acheter et de créer un avatar à partir d'un HumanoidDescription .
- ValidateUGCAccessoryAsync(player : Player,accessory : Instance,accessoryType : Enum.AccessoryType):Tuple
Studio uniquement. Exécute la validation UGC pour un Enum.AccessoryType .
Studio uniquement. Exécute la validation UGC pour un Enum.BodyPart .
Studio uniquement. Exécute la validation UGC pour tout le corps.
Évènements
- AvatarModerationCompleted(outfitId : number,moderationStatus : Enum.ModerationStatus):RBXScriptSignal
Propriétés
Méthodes
GetValidationRules
Obtient des données relatives aux règles auxquelles les ressources doivent adhérer pour passer la validation UGC.La validation est une étape essentielle avant la création d'avatars et il y a plusieurs vérifications qui survernir, y compris les limites du triangle de maillage, les tailles des textures, les limites de la taille des parties du corps, les positions d'attachement et plus encore.
Le dictionnaire de règles de validation retourné prend la forme suivante :
{["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,},...}}
Retours
Dictionnaire des règles de validation comme détaillé ci-dessus.
GenerateAvatar2DPreviewAsync
Paramètres
Retours
GetBatchTokenDetailsAsync
Obtient les détails du jeton de création d'avatar pour une liste de jetons de création d'avatar à la fois (les jetons sont générés via le processus de création de jeton ).Renvoie une série de détails de création de jeton d'avatar ; chaque détail de jeton est un dictionnaire avec les champs indiqués dans le résultat d'exemple ci-dessous :
{["Name"] = "string",["Description"] = "string",["UniverseId"] = 0,["CreatorId"] = 0,["CreatorType"] = Enum.CreatorType.User,["OnSale"] = true,["Price"] = 0,["OffSaleReasons"] = {"string",}}
Paramètres
La liste des ID de token de création d'avatar pour obtenir des détails.
Retours
Liste des détails du jeton de création d'avatar comme décrit ci-dessus.
LoadAvatar2DPreviewAsync
Paramètres
Retours
LoadGeneratedAvatarAsync
Paramètres
Retours
PromptCreateAvatarAsync
Demande à un Player d'acheter et de créer un avatar à partir d'un HumanoidDescription .Le prix de la création est dicté par le prix attribué au jeton de création d'avatar.Ce jeton de création d'avatar est requis pour l'achat et la création du corps et peut être généré en suivant le processus de création de jeton .
Pour la créationsd'un avatar, on s'attend à ce que le HumanoidDescription inclue de nouvelles ressources à créer pour chacune des 6 parties du corps (Head, Torso, RightLeg, LeftLeg, RightArm, LeftArm).Facultativement, il peut également inclure un nouvel accesoireHair .
Pour soutenir cela, le HumanoidDescription devrait inclure 6 BodyPartDescription enfants (un pour chaque partie du corps).Pour chacun, la propriété réfère à un qui inclut toutes les instances qui composent la partie du corps, par exemple un dossier qui contient , et .La propriété BodyPartDescription.BodyPart doit également être définie sur le Enum.BodyPart pertinent.
Chaque partie du corps MeshPart devra également inclure :
- An EditableImage .
- Un WrapDeformer avec un EditableMesh.
Si vous incluez un accessoire tel que les cheveux, le HumanoidDescription devrait inclure un enfant AccessoryDescription où :
- La propriété AccessoryDescription.Instance réfère à l'instance Accessory.
- La propriété AccessoryDescription.AccessoryType est définie sur la valeur pertinente Enum.AccessoryType.
Enfin, le HumanoidDescription devrait inclure les écailles humanoïdes de BodyTypeScale, HeadScale, HeightScale, WidthScale et ProportionScale.Gardez à l'esprit les échelles avec lesquelles un corps de base est importé afin qu'elles correspondent aux échelles fournies à la HumanoidDescription.
Paramètres
L'ID d'un jeton de création d'avatar.Le jeton doit être valide dans l'univers à partir duquel la méthode est appelée est le même univers pour lequel le jeton a été créé.De plus, le créateur de jeton doit maintenir la vérification de l'ID et Roblox Premium.Pour créer un jeton pour l'utilisation dans cette API, suivez le processus de création de jeton ..
Le HumanoidDescription de l'avatar destiné à la créations.
Retours
Un tuple contenant, dans l'ordre :
Un Enum.PromptCreateAvatarResult indiquant le résultat de l'invite de création.
Un resultatsde chaîne.Dans le cas de Enum.PromptCreateAvatarResult.Success, cela indiquera l'ID du paquet.Dans le cas d'un échec d'enumération, cela indiquera le message d'erreur résultant.
Un resultatsde chaîne optionnelle secondaire.Dans le cas de Enum.PromptCreateAvatarResult.Success, cela indiquera l'ID de la tenue.Dans le cas d'un échec d'enumération, ce sera nil .
Échantillons de code
The following code populates a HumanoidDescription in the expected format, prompts for avatar creation, and responds to the result.
local AvatarCreationService = game:GetService("AvatarCreationService")
export type BodyPartInfo = {
bodyPart: Enum.BodyPart,
instance: Instance, --Folder with Created MeshParts
}
export type BodyPartList = { BodyPartInfo }
local function publishAvatar(bodyPartInstances: BodyPartList, player: Player, tokenId: string)
local humanoidDescription = Instance.new("HumanoidDescription")
for _, bodyPartInfo in bodyPartInstances do
local bodyPartDescription = Instance.new("BodyPartDescription")
bodyPartDescription.Instance = bodyPartInfo.instance
bodyPartDescription.BodyPart = bodyPartInfo.bodyPart
bodyPartDescription.Parent = humanoidDescription
end
local pcallSuccess, result, resultMessage = pcall(function()
return AvatarCreationService:PromptCreateAvatarAsync(tokenId, player, humanoidDescription)
end)
if pcallSuccess then
if result == Enum.PromptCreateAvatarResult.Success then
print("Successfully uploaded with BundleId: ", resultMessage)
else
print("Unsuccessfully uploaded with error message:", resultMessage)
end
else
print("Avatar failed to create.")
end
end
ValidateUGCAccessoryAsync
Studio uniquement. Donné un Player et Instance pour un Enum.AccessoryType, détermine si la validation de l'UGC passe.
Paramètres
La validation de l'instance est exécutée.
Enum.AccessoryType l'instance est attendue pour être. Attend Eyebrow , Eyelash ou Hair .
Retours
Un tuple contenant, dans l'ordre :
- Un booléen indiquant si la validation a été réussie pour l'accesoire.
- Une table facultative de chaînes. Cela inclut les raisons d'échec de la validation si elle a échoué ; sinon nil si la validation a réussi.
ValidateUGCBodyPartAsync
Studio uniquement.Donné un Player et Instance pour un Enum.BodyPart , détermine si la validation de l'UGC passe.Le paramètre instance est attendu comme un Folder dans le format d'exemple suivant avec le paramètre pertinent MeshParts :
Cependant, si la valeur attendue bodyPart est Enum.BodyPart.Head , la fonction prend un singulier Head``Class.MeshPart directement.
Paramètres
La validation de l'instance est exécutée.
Enum.BodyPart l'instance est attendue pour être.
Retours
Un tuple contenant, dans l'ordre :
- Un booléen indiquant si la validation a été réussie pour la partie du corps.
- Une table facultative de chaînes. Cela inclut les raisons d'échec de la validation si elle a échoué ; sinon nil si la validation a réussi.
ValidateUGCFullBodyAsync
Studio uniquement. Étant donné un Player et HumanoidDescription, toutes les instances dans le HumanoidDescription seront validées.
On s'attend à ce que le HumanoidDescription inclue des instances définies sur BodyPartDescription les enfants pour chacune des 6 valeurs Enum.BodyPart requises.Facultativement, elle peut inclure des instances définies sur AccessoryDescription enfants pour Eyebrow , Eyelash , et Hair``Enum.AccessoryType|AccessoryTypes .
Paramètres
HumanoidDescription représentant le corps sur lequel la validation est exécutée.
Retours
Un tuple contenant, dans l'ordre :
- Un booléen indiquant si la validation a été réussie pour le corps.
- Une table facultative de chaînes. Cela inclut les raisons d'échec de la validation si elle a échoué ; sinon nil si la validation a réussi.