Avatar Editor Service

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Der Avatar-Editor-Dienst ermöglicht es Ihnen, auf den Avatar eines Benutzers innerhalb eines Spiels zuzugreifen und Änderungen vorzunehmen. Der Avatar-Editor-Dienst kann auch auf das Inventar eines Benutzers und den Marktplatz zugreifen, um Outfits zu speichern und Avatar-Gegenstände für das Benutzerkonto zu kaufen.

Wir empfehlen, den Avatar-Editor-Dienst mit einem In-Game-Avatar-Editor zu implementieren, um ein umfassendes Charakteranpassungserlebnis zu bieten. Siehe den Einfachen Avatar-Editor-Demo Referenzplatz für ein Beispiel für diese Funktion.

Um den Avatar-Editor-Dienst zu verwenden, müssen Sie zuerst Zugriff anfordern auf das Inventar des Benutzers. Sobald der Zugriff erfolgreich gewährt wurde, können Sie die folgenden Aktionen ausführen:

Zugriff anfordern

Um auf das Inventar eines Benutzers zuzugreifen, müssen Sie den Benutzer auffordern, den Zugriff über PromptAllowInventoryReadAccess() zuzulassen. Sie müssen diese Anfrage einmal pro Sitzung ausführen.

Verwenden Sie das folgende Codebeispiel, um die Zugriffsaufforderung zu initiieren und auf die Benutzerantwort zu hören:


local AvatarEditorService = game:GetService("AvatarEditorService")
AvatarEditorService:PromptAllowInventoryReadAccess()
local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()
if result == Enum.AvatarPromptResult.Success then
-- Zugriff gewährt!
end

Der Benutzer erhält die folgende Aufforderung:

Sobald der Benutzer die Aufforderung annimmt, kann der AvatarEditorService beginnen, auf das Inventar des Benutzers zuzugreifen.

Benutzerinventar lesen

Sobald der Benutzer Zugriff gewährt hat, können Sie dessen Inventar mit der Funktion GetInventory() lesen und ein Array von AvatarAssetTypes zur Filterung bereitstellen. Diese Funktion gibt ein InventoryPages-Objekt zurück, das die vom Benutzer besessenen Gegenstände enthält.

Verwenden Sie das folgende Codebeispiel, um eine Liste spezifischer Accessoires im Inventar eines Benutzers auszugeben:


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

Marktplatz durchsuchen

AvatarEditorService beinhaltet Funktionen und Ereignisse, mit denen Sie im Roblox-Katalog suchen können. Um zu suchen, geben Sie Ihr Suchanfrage mit einem CatalogSearchParams-Objekt an, das eine oder mehrere der folgenden Eigenschaften enthält:

EigenschaftBeschreibung
AssetTypesEin Array von Enum.AvatarAssetType, wie z.B. Enum.AvatarAssetType.BackAccessory.
BundleTypesEin Array von Enum.BundleType, wie z.B. Enum.BundleType.BodyParts.
CategoryFilterEine Enum.CatalogCategoryFilter, die die verschiedenen Katalogkategorien beschreibt, wie "Empfohlen" oder "Community-Kreationen". Standardmäßig ist dies auf Enum.CatalogCategoryFilter.None eingestellt.
MaxPriceEine ganze Zahl, die den maximalen Preis zum Filtern beschreibt.
MinPriceEine ganze Zahl, die den minimalen Preis zum Filtern beschreibt. Standardmäßig ist MinPrice 0.
SearchKeywordEin String, um gegen die Artikelbeschreibungen im Katalog zu suchen.
SortTypeEin Enum.CatalogSortType, der beschreibt, wie die Ergebnisse sortiert sind. Standardmäßig ist dies auf Enum.CatalogSortType.Relevance eingestellt.
IncludeOffSaleEin Boolean, der beschreibt, ob die Suchergebnisse auch Artikel beinhalten, die nicht zum Verkauf stehen. Standardmäßig ist dies auf false eingestellt.
CreatorIdEine ganze Zahl zur Angabe eines bestimmten Erstellers. Sie können entweder eine UserId oder eine GroupId verwenden.
CreatorNameEin String, der verwendet wird, um nach von einem bestimmten Ersteller erstellten Artikeln zu suchen. Sie können entweder einen Benutzernamen oder einen Gruppennamen verwenden.

Das folgende Codebeispiel erstellt ein CatalogSearchParams-Objekt für die Rücken- und Schulter-Assettypen und übergibt dieses über einen SearchCatalog()-Aufruf:


local AvatarEditorService = game:GetService("AvatarEditorService")
local catalogSearchParams = CatalogSearchParams.new()
local assetTypes = {
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.ShoulderAccessory
}
catalogSearchParams.AssetTypes = assetTypes
local pagesObject =
--Diese Funktion gibt ein CatalogPages-Objekt zurück, das die Ergebnisse enthält.
AvatarEditorService:SearchCatalog(catalogSearchParams)
local currentPage = pagesObject:GetCurrentPage()
for _, item in currentPage do
print(item)
end

Avatare und Outfits speichern

Wenn der AvatarEditorService zusammen mit einem In-Game-Avatar-Editor verwendet wird, kann er Avatar-Gegenstände und Outfits auf der Roblox-Plattform speichern und aktualisieren. Benutzer erhalten beim Speichern eines Avatars oder Outfits keine Katalogartikel, die sie nicht besitzen.

Jede HumanoidDescription kann mit PromptSaveAvatar() im aktuellen Avatar des Benutzers gespeichert werden. Dies kann Folgendes umfassen:

  • Vorgegebene Avatar-Konfigurationen, die Sie mit vorhandenen Katalogartikeln erstellt haben.
  • Jede Konfiguration, die der Benutzer über einen In-Game-Avatar-Editor ausgewählt hat.

Da AvatarEditorService:PromptSaveAvatar() nicht yieldet, können Sie das Ergebnis erhalten, indem Sie auf das Ereignis AvatarEditorService.PromptSaveAvatarCompleted hören.

Der folgende Code speichert eine aktuelle HumanoidDescription mit PromptSaveAvatar() und überprüft ein erfolgreiches Ereignis von 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 gespeichert!
end

Um eine beliebige HumanoidDescription als Outfit zu speichern (ohne den aktuellen Avatar des Benutzers zu überschreiben), verwenden Sie AvatarEditorService:PromptCreateOutfit().

Sobald er aufgerufen wird, können Sie das Ergebnis von AvatarEditorService:PromptCreateOutfit() erhalten, indem Sie auf das Ereignis AvatarEditorService.PromptCreateOutfitCompleted hören.

Das folgende Codebeispiel erstellt ein Outfit mit AvatarEditorService:PromptCreateOutfit() und hört auf ein erfolgreiches Ereignis von 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
-- Outfit gespeichert!
end

Gegenstände kaufen

Beim Speichern eines Avatars oder eines Outfits, das Katalogartikel verwendet, erhält der Benutzer keine Gegenstände, die er nicht besitzt. Überprüfen Sie vor dem Speichern eines Avatars oder Outfits, ob der Benutzer den Vermögenswert mit MarketplaceService:PlayerOwnsAsset() besitzt, und bieten Sie ihm die Möglichkeit, den Artikel mit MarketplaceService:PromptPurchase() zu kaufen.

Wenn Sie keine Artikelkäufe implementieren möchten, können Sie stattdessen Benutzern erlauben, nicht besessene Artikel mit AvatarEditorService:PromptSetFavorite() zu favorisieren.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.