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 :
- Lire l'inventaire de l'utilisateur pour obtenir une liste des articles possédés par l'utilisateur.
- Recherchez le marché en ligne », en utilisant une variété de propriétés pour filtrer et trier.
- Équiper des articles d'avatar et enregistrer des tenues à l'avatar de l'utilisateur.
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 doprint(item)endend
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 ressources | Une série de Enum.AvatarAssetType tels que Ensemble.AvatarAssetType.BackAccessory. |
Types de packs | Une série de Enum.BundleType tels que les parties du corps de Ensemble.束ルールType. |
Filtre de catégorie | Un 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 |
PrixMax | Un nombre décimal décrire le prix maximum à filtres. |
Prix minimum | Un 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 tri | Un 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 vente | Un 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éateurId | Un nombre entier pour spécifier un créateur donné. Vous pouvez utiliser soit un UserId, soit un GroupId. |
Nom du créateur | Une 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 = 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
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.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 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.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 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() .