Le service d'éditeur d'avatar vous permet d'accéder et de modifier l'avatar d'un utilisateur dans une expérience.Le service d'éditeur d'avatar peut également accéder à l'inventaire d'un utilisateur et au marché pour sauvegarder des tenues et acheter des objets d'avatar à la compte de l'utilisateur.
Nous recommandons d'implémenter le service d'éditeur d'avatar avec un éditeur d'avatar dans le jeu pour une expérience de personnalisation complète du personnage.Voir l'endroit de référence Simple Avatar Editor Demo pour un exemple de cette fonctionalité.
Pour commencer à utiliser le service d'éditeur d'avatar, vous devez d'abord demander l'accès à l'inventaire de l'utilisateur.Après l'accès a été accordé avec succès, vous pouvez effectuer les actions suivantes :
- Lire l'inventaire de l'utilisateur pour obtenir une liste des articles possédés par l'utilisateur.
- Rechercher sur le marché , en utilisant une variété de propriétés pour filtrer et trier.
- Équiper des objets d'avatar et enregistrer des tenues sur l'avatar de l'utilisateur.
- Invitez l'utilisateur à acheter un itemdu marché.
Demander l'accès
Pour commencer à accéder à l'inventaire d'un utilisateur, vous devez demander à l'utilisateur de permettre l'accès via PromptAllowInventoryReadAccess() .Vous devez effectuer cette demande une fois par session.
Utilisez l'exemple de code suivant pour lancer 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 des utilisateurs
Une fois l'accès accordé par l'utilisateur, vous pouvez lire son inventaire avec la fonction GetInventory(), fournissant une liste d'éléments à filtrer parmi les AvatarAssetTypes.Cette fonction renvoie un objet InventoryPages contenant les éléments appartenant à 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 doprint(item)endend
Rechercher sur le marché
AvatarEditorService inclut des fonctions et des événements qui vous permettent de rechercher le catalogue Roblox.Pour rechercher, fournissez votre requête avec un objet CatalogSearchParams qui inclut une ou plusieurs des propriétés suivantes :
Propriété | Avertissement |
---|---|
Types de ressources | Un ensemble de Enum.AvatarAssetType tels que Enum.AvatarAssetType.BackAccessory. |
Types de paquet | Un ensemble de Enum.BundleType tels que Enum.BundleType.BodyParts. |
Filtre de catégorie | Un Enum.CatalogCategoryFilter décrivant les différentes catégories de catalogue comme "En vedette" ou "Créations communautaires". Par défaut, cela est défini sur Enum.CatalogCategoryFilter.None |
Prix maximum | Un entier décrivant le prix maximum à filtres. |
Prix minimum | Un entier décrivant le prix minimum à filtres. Par défaut, MinPrice est 0 . |
Rechercher le mot-clé | Une chaîne à interroger contre les descriptions d'objets dans le catalogue. |
Type de tri | Un Enum.CatalogSortType qui décrit comment les résultats sont triés. Par défaut, cela est défini sur Enum.CatalogSortType.Relevance . |
Inclure hors vente | Un booléen décrivant si les résultats de la recherche incluent des articles hors vente. Par défaut, cela est défini sur false. |
CréateurId | Un entier pour spécifier un créateur donné. Vous pouvez utiliser un UserId ou un GroupId. |
Nom du créateur | Une chaîne utilisée pour rechercher par des articles créés par un créateur donné. Vous pouvez utiliser un nom d'utilisateur ou un nom de groupe. |
Les codes d'exemple suivants construisent un objet CatalogSearchParams pour les types de ressources Arrière et Épaule , et le transmettent par le biais d'un appel SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Cette fonction renvoie un objet CatalogPages contenant les résultats.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Enregistrer des avatars et des tenues
Lorsqu'il est utilisé avec un éditeur d'avatar dans le jeu, AvatarEditorService peut sauvegarder et mettre à jour les objets et les tenues d'avatar sur la plateformeRoblox.Les utilisateurs ne reçoivent pas les articles du catalogue qu'ils ne possèdent pas lorsqu'ils sauvegardent un avatar ou une tenue.
Tout HumanoidDescription peut être sauvegardé dans l'avatar actuel de l'utilisateur avec PromptSaveAvatar() . Cela peut inclure :
- Configurations d'avatar préexistantes que vous avez construites en utilisant des éléments de catalogue existants.
- Toute configuration que l'utilisateur a choisie via un éditeur d'avatar en jeu.

Puisque AvatarEditorService:PromptSaveAvatar() ne produit pas de résultat, vous pouvez obtenir le résultat en écoutant l'événement AvatarEditorService.PromptSaveAvatarCompleted.
Le code suivant enregistrera un événement actuel HumanoidDescription en utilisant PromptSaveAvatar() et vérifiera un événement réussi AvatarEditorService.PromptSaveAvatarCompleted :
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal 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 quel 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 AvatarEditorService.PromptCreateOutfitCompleted réussi :
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal 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 de sauvegarder un avatar ou une tenue, vérifiez si l'utilisateur possède la ressource avec MarketplaceService:PlayerOwnsAsset() et lui fournissez une option d'achat de l'article avec MarketplaceService:PromptPurchase() .
Si vous ne souhaitez pas implémenter les achats d'objets, vous pouvez plutôt permettre aux utilisateurs de favoriser des objets non possédés avec AvatarEditorService:PromptSetFavorite() .