El Servicio de Editor de Avatar te permite acceder y realizar cambios en el avatar de un usuario dentro de un juego. El Servicio de Editor de Avatar también puede acceder al inventario de un usuario y al Marketplace para guardar atuendos y comprar artículos de avatar para la cuenta del usuario.
Recomendamos implementar el Servicio de Editor de Avatar con un editor de avatar en el juego para una experiencia de personalización de personajes completa. Consulta el Demo Simple de Editor de Avatar lugar de referencia para un ejemplo de esta función.
Para comenzar a usar el Servicio de Editor de Avatar, primero debes solicitar acceso al inventario del usuario. Una vez que se concede el acceso con éxito, puedes realizar las siguientes acciones:
- Leer el inventario del usuario para obtener una lista de artículos propiedad del usuario.
- Buscar en el Marketplace, utilizando una variedad de propiedades para filtrar y ordenar.
- Equipa artículos de avatar y guarda atuendos en el avatar del usuario.
- Pedir al usuario que compre un artículo del Marketplace.
Solicitar acceso
Para comenzar a acceder al inventario de un usuario, necesitas solicitar al usuario que permita el acceso a través de PromptAllowInventoryReadAccess(). Debes realizar esta solicitud una vez por sesión.
Utiliza el siguiente ejemplo de código para iniciar el aviso de acceso y escuchar la respuesta del usuario:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- ¡Acceso concedido!end
El usuario recibe el siguiente aviso:

Una vez que el usuario acepta el aviso, AvatarEditorService puede comenzar a acceder al inventario del usuario.
Leer el inventario del usuario
Una vez que se concede el acceso por parte del usuario, puedes leer su inventario con la función GetInventory(), suministrando un array de AvatarAssetTypes para filtrar. Esta función devuelve un objeto InventoryPages que contiene los artículos propiedad del usuario.
Utiliza el siguiente ejemplo de código para imprimir una lista de accesorios específicos en el inventario de un usuario:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- ¡Acceso concedido!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
Buscar en el Marketplace
AvatarEditorService incluye funciones y eventos que te permiten buscar en el catálogo de Roblox. Para buscar, suministra tu consulta con un objeto CatalogSearchParams que incluya una o más de las siguientes propiedades:
| Propiedad | Descripción |
|---|---|
| AssetTypes | Un array de Enum.AvatarAssetType como Enum.AvatarAssetType.BackAccessory. |
| BundleTypes | Un array de Enum.BundleType como Enum.BundleType.BodyParts. |
| CategoryFilter | Un Enum.CatalogCategoryFilter que describe las diversas categorías del catálogo como "Destacados" o "Creaciones de la Comunidad". Por defecto, esto está configurado en Enum.CatalogCategoryFilter.None |
| MaxPrice | Un entero que describe el precio máximo para filtrar. |
| MinPrice | Un entero que describe el precio mínimo para filtrar. Por defecto, MinPrice es 0. |
| SearchKeyword | Una cadena para consultar las descripciones de los artículos en el catálogo. |
| SortType | Un Enum.CatalogSortType que describe cómo se ordenan los resultados. Por defecto, esto está configurado en Enum.CatalogSortType.Relevance. |
| IncludeOffSale | Un booleano que describe si los resultados de la búsqueda incluyen artículos que no están a la venta. Por defecto, esto está configurado en false. |
| CreatorId | Un entero para especificar un creador determinado. Puedes usar un UserId o un GroupId. |
| CreatorName | Una cadena utilizada para buscar artículos creados por un creador determinado. Puedes usar un Nombre de Usuario o un Nombre de Grupo. |
El siguiente ejemplo de código construye un objeto CatalogSearchParams para Espalda y Hombro tipos de activos, y lo pasa a través de una llamada a SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--Esta función devuelve un objeto CatalogPages que contiene los resultados.AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
Guardar avatares y atuendos
Cuando se usa junto con un editor de avatar en el juego, AvatarEditorService puede guardar y actualizar artículos de avatar y atuendos en la plataforma Roblox. Los usuarios no reciben artículos del catálogo que no poseen al guardar un avatar o atuendo.
Cualquier HumanoidDescription se puede guardar en el avatar actual del usuario con PromptSaveAvatar(). Esto puede incluir:
- Configuraciones de avatar predefinidas que has creado utilizando artículos existentes del catálogo.
- Cualquier configuración que el usuario haya elegido a través de un editor de avatar en el juego.

Dado que AvatarEditorService:PromptSaveAvatar() no produce un resultado, puedes obtener el resultado escuchando el evento AvatarEditorService.PromptSaveAvatarCompleted.
El siguiente código guardará una HumanoidDescription actual usando PromptSaveAvatar() y verifica si se ha producido un evento exitoso de 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 guardado!end
Para guardar cualquier HumanoidDescription como un atuendo (sin sobrescribir el avatar actual del usuario), usa AvatarEditorService:PromptCreateOutfit().

Una vez llamado, puedes obtener el resultado de AvatarEditorService:PromptCreateOutfit() escuchando el evento AvatarEditorService.PromptCreateOutfitCompleted.
El siguiente ejemplo de código crea un atuendo con AvatarEditorService:PromptCreateOutfit() y escucha un evento exitoso de 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-- ¡Atuendo guardado!end
Comprar artículos
Al guardar un avatar o un atuendo que utiliza artículos del catálogo, el usuario no recibe ningún artículo que no posea. Antes de guardar un avatar o atuendo, verifica si el usuario posee el activo con MarketplaceService:PlayerOwnsAsset() y ofrécele una opción para comprar el artículo con MarketplaceService:PromptPurchase().
Si no deseas implementar compras de artículos, puedes permitir que los usuarios agreguen a favoritos los artículos no poseídos con AvatarEditorService:PromptSetFavorite().