El servicio de Editor de Avatar te permite acceder y hacer cambios en el avatar de un usuario dentro de una experiencia. El servicio de Editor de Avatar también puede acceder a un usuario del inventario y el Mercado para guardar conjuntos 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. Vea el lugar de referencia Simple Avatar Editor Demo para obtener un ejemplo de esta función.
Para comenzar a usar el servicio de editor de avatares, debe solicitar primero acceso al inventario del usuario. Después de que se otorgue el acceso con éxito, puede realizar las siguientes acciones:
- Leer el inventario del usuario para obtener una lista de artículos propiedad del usuario.
- Busca en el Marketplace , usando una variedad de propiedades para filtrar y ordenar.
- Equipar artículos de avatar y guardar conjuntos a los conjuntos del usuario.
- Solicite al usuario que compre un objetode Marketplace.
Solicitando acceso
Para comenzar a acceder al inventario de un usuario, debe solicitar al usuario que permita el acceso a través de PromptAllowInventoryReadAccess() . Debe realizar esta solicitud una vez por sesión.
Usa el siguiente código de ejemplo para iniciar la solicitud 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 la siguiente solicitud:
Una vez que el usuario acepte el mensaje, el AvatarEditorService puede comenzar a acceder al inventario del usuario.
Leer el inventario del usuario
Una vez que el usuario otorgue el acceso, puedes leer su inventario con la función GetInventory(), proporcionando un conjunto de AvatarAssetTypes para filtrar por. Esta función devuelve un objeto InventoryPages que contiene los elementos propiedad del usuario.
Usa el siguiente código de ejemplo 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
Buscando en el Mercado
AvatarEditorService incluye funciones y eventos que le permiten buscar en el catálogo de Roblox. Para buscar, proporcione su consulta con un objeto CatalogSearchParams que incluye una o más de las siguientes propiedades:
Propiedad | Descripción |
---|---|
Tipos de activos | Un arreglo de Enum.AvatarAssetType como el arreglo de accesorios de Rück. |
Tipos de paquetes | Un arreglo de Enum.BundleType como Equipo de Combinación. |
Filtro de categorías | Un Enum.CatalogCategoryFilter que describe las varias categorías de catálogo, como "Características Destacadas" o "Creaciones Comunitarias". Por defecto, esto está configurado como Enum.CatalogCategoryFilter.None |
Precio máximo | Un número que describe el precio máximo para filtro. |
PrecioMinimo | Un número que describe el precio mínimo para filtro. Por defecto, MinPrice es 0 . |
Buscar palabra clave | Una cadena para consultar contra las descripciones del artículo en el catálogo. |
Tipo de clasificación | Un Enum.CatalogSortType que describe cómo se ordenan los resultados. Por defecto, esto está configurado como Enum.CatalogSortType.Relevance . |
Incluir fuera de venta | Un valor deBooleano que describe si los resultados de la búsqueda incluyen artículos no en venta. Por defecto, esto se establece como falso. |
Identificación del creador | Un número para especificar un creador dado. Puedes usar tanto un ID de usuario como un ID de grupo. |
NombreArtista | Una cadena que se usa para buscar por artículos creados por un creador dado. Puedes usar tanto un nombre de usuario como un nombre de grupo. |
El siguiente código de ejemplo construye un objeto de CatalogSearchParams para Back y Shoulder tipos de activos, y pasa a través de una llamada de 2>Class.AvatarEditorService:SearchCatalog()|SearchCatalog()2> a:
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
Guardando avatares y conjuntos
Cuando se usa junto con un editor de avatar en el juego, AvatarEditorService puede guardar y actualizar los artículos y conjuntos de avatar en la plataforma Roblox. Los usuarios no reciben artículos del catálogo que no son propiedad cuando se guarda un avatar o conjunto.
Cualquier HumanoidDescription se puede guardar en el avatar actual del usuario con PromptSaveAvatar() . Esto puede incluir:
- Configuraciones de avatar predefinidas que has construido usando artículos del catálogo existentes.
- Cualquier configuración que el usuario haya elegido a través de un editor de avatar en el juego.
Dado que AvatarEditorService:PromptSaveAvatar() no muestra el resultado, puede obtener el resultado escuchando el evento AvatarEditorService.PromptSaveAvatarCompleted .
El siguiente código guardará un HumanoidDescription actual usando PromptSaveAvatar() y verificará un evento de AvatarEditorService.PromptSaveAvatarCompleted exitoso:
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 que se llama, puede obtener el resultado de AvatarEditorService:PromptCreateOutfit() escuchando el evento AvatarEditorService.PromptCreateOutfitCompleted .
El siguiente código de ejemplo crea un atuendo con AvatarEditorService:PromptCreateOutfit() y escucha un evento de éxito 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
Comprando artículos
Cuando se guarda un avatar o un atuendo que utiliza artículos del catálogo, el usuario no recibe ningún artículo que no en posesión. Antes de guardar un atuendo o un avatar, verifique si el usuario posee el activo con MarketplaceService:PlayerOwnsAsset() y proporcione una opción para comprar el artículo con MarketplaceService:PromptPurchase() .
Si no desea implementar compras de artículos, puede permitir que los usuarios favoritos artículos no propiedad con AvatarEditorService:PromptSetFavorite() .