Service Éditeur d'Avatar

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le service Éditeur d'avatar vous permet d'accéder et de modifier l'avatar d'un utilisateur dans une expérience. Le service Éditeur d'avatar peut également accéder à l'inventaire d'un utilisateur et au Marché en ligne pour enregistrer les tenues et les articles d'avatar dans le compte de l'utilisateur.

Nous recommandons d'utiliser le service d'éditeur d'avatar avec un éditeur d'avatar dans le jeu pour une expérience de personnalisation du personnage complète. Voir le simple avatar éditeur démo lieu de référence pour un exemple de cette fonctionalité.

Pour commencer à utiliser le service Éditeur d'avatar, vous devez d'abord demander l'accès à l'inventaire de l'utilisateur. Après avoir reçu l'accès avec succès, vous pouvez effectuer les actions suivantes :

Demander l'accès

Pour commencer à accéder à l'inventaire d'un utilisateur, vous devez demander à l'utilisateur d'autoriser l'accès via PromptAllowInventoryReadAccess() . Vous devez effectuer cette demande une fois par session.

Utilisez l'exemple de code suivant pour initialiser la demande d'accès et écouter la réponse de l'utilisateur :


local AvatarEditorService = game:GetService("AvatarEditorService")
AvatarEditorService:PromptAllowInventoryReadAccess()
local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Accès accordé !
end

L'utilisateur reçoit la demande suivante :

Une fois que l'utilisateur a accepté la demande, le AvatarEditorService peut commencer à accéder à l'inventaire de l'utilisateur.

Lire l'inventaire de l'utilisateur

Une fois l'accès accordé par l'utilisateur, vous pouvez lire son inventaire avec la fonction GetInventory(), en fournissant une série de AvatarAssetTypes pour filtrer par. Cette fonction renvoie un objet InventoryPages contenant les articles possédés par l'utilisateur.

Utilisez l'exemple de code suivant pour imprimer une liste d'accessoires spécifiques dans l'inventaire d'un utilisateur :


local AvatarEditorService = game:GetService("AvatarEditorService")
AvatarEditorService:PromptAllowInventoryReadAccess()
local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Accès accordé !
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory,
Enum.AvatarAssetType.WaistAccessory
}
local pagesObject = AvatarEditorService:GetInventory(assetTypes)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end
end

Rechercher sur le marché

AvatarEditorService inclut des fonctions et des événements qui vous permettent de rechercher dans le catalogue Roblox. Pour rechercher, fournissez votre requête avec un objet CatalogSearchParams qui inclut l'un ou plusieurs des éléments suivants :

PropriétéDescription
Types de ressourcesUne série de Enum.AvatarAssetType tels que Ensemble.AvatarAssetType.BackAccessory.
Types de packsUne série de Enum.BundleType tels que les parties du corps de Ensemble.束ルールType.
Filtre de catégorieUn Enum.CatalogCategoryFilter dans lequel se trouvent les différentes catégories de catalogue, telles que « Featured » ou « Community Creations ». Par défaut, ceci est réglé sur Enum.CatalogCategoryFilter.None
PrixMaxUn nombre décimal décrire le prix maximum à filtres.
Prix minimumUn nombre décrivant le prix minimum à filtres. Par défaut, MinPrice est 0 .
Rechercher par mot-cléUne chaîne pour rechercher des descriptions d'objets dans le catalogue.
Type de triUn Enum.CatalogSortType qui décrit comment les résultats sont triés. Par défaut, ceci est réglé sur Enum.CatalogSortType.Relevance.
Inclure hors venteUn booléen décrivant si les résultats de la recherche incluent des articles hors vente. Par défaut, ceci est réglé sur false.
CréateurIdUn nombre entier pour spécifier un créateur donné. Vous pouvez utiliser soit un UserId, soit un GroupId.
Nom du créateurUne chaîne utilisée pour rechercher par élément créé par un créateur donné. Vous pouvez utiliser soit un nom d'utilisateur, soit un nom de groupe.

L'exemple de code suivant crée un objet CatalogSearchParams pour Back et Shoulder types de ressources, et passe par une 2> Class.AvatarEditorService:SearchCatalog()|SearchCatalog() appel :


local AvatarEditorService = game:GetService("AvatarEditorService")
local catalogSearchParams = CatalogSearchParams.new()
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory
}
catalogSearchParams.AssetTypes = assetTypes
local pagesObject =
--Cette fonction renvoie un objet CatalogPages contenant les résultats.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end

Enregistrement des avatars et des tenues

Lorsqu'il est utilisé avec un éditeur d'avatar dans le jeu, AvatarEditorService peut enregistrer et mettre à jour les articles d'avatar et les tenues à la plateformeRoblox. Les utilisateurs ne reçoivent pas les articles du catalogue qu'ils ne possèdent pas lors de l'enregistrement d'un avatar ou d'une tenue.

Tout HumanoidDescription peut être sauvegardé sur l'avatar de l'utilisateur avec PromptSaveAvatar() . Cela peut inclure :

  • Configurations d'avatar préfinies que vous avez construites à l'aide de l'éléments de catalogue existants.
  • Toute configuration que l'utilisateur a choisie via un éditeur d'avatar dans le jeu.

Puisque AvatarEditorService:PromptSaveAvatar() ne génère pas, vous pouvez obtenir le résultat en écoutant l'événement AvatarEditorService.PromptSaveAvatarCompleted.

Le code suivant enregistrera un HumanoidDescription actuel à l'aide de PromptSaveAvatar() et vérifiera un événement AvatarEditorService.PromptSaveAvatarCompleted réussi :


local AvatarEditorService = game:GetService("AvatarEditorService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local currentDescription = humanoid:GetAppliedDescription()
AvatarEditorService:PromptSaveAvatar(currentDescription, humanoid.RigType)
local result = AvatarEditorService.PromptSaveAvatarCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Avatar enregistré !
end

Pour enregistrer n'importe quelle HumanoidDescription comme tenue (sans écraser l'avatar actuel de l'utilisateur), utilisez AvatarEditorService:PromptCreateOutfit() .

Une fois appelé, vous pouvez obtenir le résultat de AvatarEditorService:PromptCreateOutfit() en écoutant l'événement AvatarEditorService.PromptCreateOutfitCompleted.

L'exemple de code suivant crée une tenue avec AvatarEditorService:PromptCreateOutfit() et écoute un événement de succès AvatarEditorService.PromptCreateOutfitCompleted :


local AvatarEditorService = game:GetService("AvatarEditorService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local currentDescription = humanoid:GetAppliedDescription()
AvatarEditorService:PromptCreateOutfit(currentDescription, humanoid.RigType)
local result = AvatarEditorService.PromptCreateOutfitCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Tenue enregistrée !
end

Acheter des articles

Lors de l'enregistrement d'un avatar ou d'une tenue qui utilise des articles du catalogue, l'utilisateur ne reçoit aucun article qu'il ne posséderpas. Avant d'enregistrer un avatar ou une tenue, vérifiez si l'utilisateur possède la ressource avec MarketplaceService:PlayerOwnsAsset() et fournissez-lui une option d'achat de l'article avec Class.MarketplaceService:Prom

Si vous ne souhaitez pas implémenter les achats d'objets, vous pouvez plutôt permettre aux utilisateurs d'ajouter des articles non possédés avec AvatarEditorService:PromptSetFavorite() .