Avatar Editor Service

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.

De Avatar Editor Service stelt je in staat om toegang te krijgen tot en wijzigingen aan te brengen in de avatar van een gebruiker binnen een spel. De Avatar Editor Service kan ook toegang krijgen tot de inventaris van een gebruiker en de Marketplace om outfits op te slaan en avatar-items aan het account van de gebruiker aan te schaffen.

We raden aan om de Avatar Editor Service te implementeren met een in-game avatar-editor voor een complete ervaring in karakteraanpassing. Zie de Simple Avatar Editor Demo referentieplaats voor een voorbeeld van deze functie.

Om te beginnen met het gebruik van de Avatar Editor Service, moet je eerst toegang aanvragen tot de inventaris van de gebruiker. Nadat de toegang met succes is verleend, kun je de volgende acties uitvoeren:

Toegang aanvragen

Om toegang te krijgen tot de inventaris van een gebruiker, moet je de gebruiker vragen om toegang toe te staan via PromptAllowInventoryReadAccess(). Je moet deze aanvraag eenmaal per sessie uitvoeren.

Gebruik het volgende codevoorbeeld om de toegangsprompt te initiëren en te luisteren naar de reactie van de gebruiker:

local AvatarEditorService = game:GetService("AvatarEditorService")
AvatarEditorService:PromptAllowInventoryReadAccess()
local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Toegang verleend!
end

De gebruiker ontvangt de volgende prompt:

Zodra de gebruiker de prompt accepteert, kan AvatarEditorService beginnen met het verkrijgen van toegang tot de inventaris van de gebruiker.

Lees de inventaris van de gebruiker

Zodra de toegang door de gebruiker is verleend, kun je hun inventaris lezen met de functie GetInventory(), waarbij je een array van AvatarAssetTypes opgeeft om op te filteren. Deze functie retourneert een InventoryPages object dat de items bevat die de gebruiker bezit.

Gebruik het volgende codevoorbeeld om een lijst van specifieke accessoires in de inventaris van een gebruiker af te drukken:

local AvatarEditorService = game:GetService("AvatarEditorService")
AvatarEditorService:PromptAllowInventoryReadAccess()
local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Toegang verleend!
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

Zoek in de Marketplace

AvatarEditorService bevat functies en evenementen waarmee je de Roblox-catalogus kunt doorzoeken. Om te zoeken, geef je je query op met een CatalogSearchParams object dat een of meer van de volgende eigenschappen bevat:

EigenschapBeschrijving
AssetTypesEen array van Enum.AvatarAssetType zoals Enum.AvatarAssetType.BackAccessory.
BundleTypesEen array van Enum.BundleType zoals Enum.BundleType.BodyParts.
CategoryFilterEen Enum.CatalogCategoryFilter die de verschillende cataloguscategorieën beschrijft, zoals "Uitgelicht" of "Community Creations". Standaard is dit ingesteld op Enum.CatalogCategoryFilter.None.
MaxPriceEen geheel getal dat de maximale prijs beschrijft om op te filteren.
MinPriceEen geheel getal dat de minimale prijs beschrijft om op te filteren. Standaard is MinPrice 0.
SearchKeywordEen string om te zoeken in de beschrijvingen van items in de catalogus.
SortTypeEen Enum.CatalogSortType die beschrijft hoe de resultaten zijn geordend. Standaard is dit ingesteld op Enum.CatalogSortType.Relevance.
IncludeOffSaleEen boolean die beschrijft of de resultaten van de zoekopdracht off-sale items bevatten. Standaard is dit ingesteld op false.
CreatorIdEen geheel getal om een bepaalde maker op te geven. Je kunt zowel een UserId als een GroupId gebruiken.
CreatorNameEen string die wordt gebruikt om te zoeken naar items die zijn gemaakt door een bepaalde maker. Je kunt zowel een gebruikersnaam als een groepsnaam gebruiken.

Het volgende codevoorbeeld construeert een CatalogSearchParams object voor Back en Shoulder assettypes, en geeft dat door aan een SearchCatalog() aanroep:

local AvatarEditorService = game:GetService("AvatarEditorService")
local catalogSearchParams = CatalogSearchParams.new()
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory
}
catalogSearchParams.AssetTypes = assetTypes
local pagesObject =
--Deze functie retourneert een CatalogPages object dat de resultaten bevat.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end

Sla avatars en outfits op

Wanneer gebruikt in combinatie met een in-game avatar-editor, kan AvatarEditorService avatar-items en outfits opslaan en bijwerken op het Roblox-platform. Gebruikers ontvangen geen catalogusitems die ze niet bezitten wanneer ze een avatar of outfit opslaan.

Elke HumanoidDescription kan worden opgeslagen op de huidige avatar van de gebruiker met PromptSaveAvatar(). Dit kan omvatten:

  • Vooraf gedefinieerde avatarconfiguraties die je hebt gemaakt met bestaande catalogusitems.
  • Elke configuratie die de gebruiker heeft gekozen via een in-game avatar-editor.

Aangezien AvatarEditorService:PromptSaveAvatar() niet yield, kun je het resultaat krijgen door te luisteren naar het AvatarEditorService.PromptSaveAvatarCompleted evenement.

De volgende code zal een huidige HumanoidDescription opslaan met PromptSaveAvatar() en controleert op een succesvolle AvatarEditorService.PromptSaveAvatarCompleted evenement:

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

Om een HumanoidDescription als een outfit op te slaan (zonder de huidige avatar van de gebruiker te overschrijven), gebruik je AvatarEditorService:PromptCreateOutfit().

Zodra deze is aangeroepen, kun je het resultaat van AvatarEditorService:PromptCreateOutfit() krijgen door te luisteren naar het AvatarEditorService.PromptCreateOutfitCompleted evenement.

Het volgende codevoorbeeld maakt een outfit met AvatarEditorService:PromptCreateOutfit() en luistert naar een succesvol AvatarEditorService.PromptCreateOutfitCompleted evenement:

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
-- Outfit opgeslagen!
end

Items kopen

Bij het opslaan van een avatar of outfit die gebruikmaakt van catalogusitems, ontvangt de gebruiker geen items die ze niet bezitten. Controleer voordat je een avatar of outfit opslaat of de gebruiker het asset bezit met MarketplaceService:PlayerOwnsAsset() en bied hen de optie om het item aan te schaffen met MarketplaceService:PromptPurchase().

Als je geen itemaankopen wilt implementeren, kun je in plaats daarvan gebruikers toestaan om niet-bezitte items als favoriet te markeren met AvatarEditorService:PromptSetFavorite().

©2026 Roblox Corporation. Roblox, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.