Servicio de editor de avatares

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El servicio de editor de avatares te permite acceder y hacer cambios en el avatar de un usuario dentro de una experiencia.El servicio de editor de avatares también puede acceder al inventario de un usuario y al mercado para guardar trajes y comprar artículos de avatar a 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 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, puedes realizar las siguientes acciones:

Solicitar acceso

Para comenzar a acceder al inventario de un usuario, debe solicitar al usuario que permita el acceso a través de PromptAllowInventoryReadAccess() .Necesitas realizar esta solicitud una vez por sesión.

Usa el siguiente ejemplo de código 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 el siguiente mensaje:

Una vez que el usuario acepte la solicitud, el AvatarEditorService puede comenzar a acceder al inventario del usuario.

Leer inventario de usuario

Una vez que el usuario tenga acceso, puedes leer su inventario con la función GetInventory(), que suministra un array de AvatarAssetTypes para filtrar.Esta función devuelve un objeto InventoryPages que contiene los elementos propiedad del usuario.

Usa 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 do
print(item)
end
end

Buscar en el mercado

AvatarEditorService incluye funciones y eventos que te permiten buscar el catálogo de Roblox.Para buscar, suministre su consulta con un objeto CatalogSearchParams que incluya una o más de las siguientes propiedades:

PropiedadDescripción
Tipos de activosUn array de Enum.AvatarAssetType como Enum.AvatarAssetType.BackAccessory.
Tipos de paqueteUn array de Enum.BundleType tales como Enum.BundleType.BodyParts.
Filtro de categoríaUn Enum.CatalogCategoryFilter describiendo las diversas categorías de catálogo como "Destacado" o "Creaciones comunitarias". Por defecto, esto se establece en Enum.CatalogCategoryFilter.None
Precio máximoUn entero que describe el precio máximo para filtro.
Precio mínimoUn entero que describe el precio mínimo para filtro. Por defecto, MinPrice es 0.
Buscar palabra claveUna cadena para consultar contra las descripciones de los artículos en el catálogo.
Tipo de clasificaciónUn Enum.CatalogSortType que describe cómo se ordenan los resultados. Por defecto, esto se establece en Enum.CatalogSortType.Relevance .
Incluir fuera de ventaUn booleano que describe si los resultados de la búsqueda incluyen artículos fuera de venta. Por defecto, esto se establece en falso.
CreadorIdUn entero para especificar un creador dado. Puedes usar un UserId o un GroupId.
Nombre del creadorUna cadena utilizada para buscar por artículos creados por un creador determinado. Puedes usar un nombre de usuario o un nombre de grupo.

Los siguientes ejemplos de código construyen un objeto CatalogSearchParams para espalda y tipo de hombro tipos de activos, y lo pasan a través de una llamada SearchCatalog():


local AvatarEditorService = game:GetService("AvatarEditorService")
local catalogSearchParams = CatalogSearchParams.new()
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory
}
catalogSearchParams.AssetTypes = assetTypes
local pagesObject =
--Esta función devuelve un objeto CatalogPages que contiene los resultados.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(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 y atuendos de avatar en la plataforma de Roblox.Los usuarios no reciben artículos de 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 construido utilizando elementos de 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 produce resultados, puedes obtener el resultado escuchando el evento AvatarEditorService.PromptSaveAvatarCompleted.

El siguiente código guardará un actual HumanoidDescription usando PromptSaveAvatar() y verificará un evento exitoso de AvatarEditorService.PromptSaveAvatarCompleted:


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 guardado!
end

Para guardar cualquier HumanoidDescription como un atuendo (sin reemplazar el avatar actual del usuario), use 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 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
-- ¡Atuendo guardado!
end

Comprar artículos

Al guardar un avatar o un atuendo que utiliza artículos de catálogo, el usuario no recibe ningún artículo que no en posesión.Antes de guardar un avatar o un atuendo, compruebe 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 las compras de artículos, puede permitir a los usuarios favoritar artículos no adquiridos con AvatarEditorService:PromptSetFavorite() .