Avatar-Editor-Dienst

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

Der Avatar-Editor-Service ermöglicht dir, auf den Avatar eines Benutzers innerhalb einer Erlebniszuzugreifen und Änderungen daran vorzunehmen.Der Avatar-Editor-Service kann auch auf das Inventar eines Benutzers und den Marktplatz zugreifen, um Outfits und Avatarartikel auf das Konto des Benutzers zu speichern und zu kaufen.

Wir empfehlen, den Avatar-Editor-Service mit einem Avatar-Editor im Spiel für ein komplettes Erlebniszu implementieren.Siehe den Simple Avatar Editor Demo Referenzplatz für ein Beispiel für diese Funktion.

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

Zugriff anfordern

Um den Zugriff auf das Inventar eines Benutzers zu beginnen, musst du den Benutzer auffordern, Zugriff durch PromptAllowInventoryReadAccess() zu erlauben.Du musst diese Anfrage einmal pro Sitzung ausführen.

Verwende das folgende Codebeispiel, um die Zugriffsaufforderung zu starten und auf die Antwort des Benutzers 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 akzeptiert, kann der AvatarEditorService Zugriff auf das Inventar des Benutzers beginnen.

Lesen Sie Inventar

Sobald der Zugriff vom Benutzer gewährt wird, kannst du sein Inventar mit der GetInventory()-Funktion lesen, die ein Array von AvatarAssetTypes zur Verfügung stellt, um zu filtern.Diese Funktion gibt ein InventoryPages Objekt zurück, das die vom Benutzer gehörenden Artikel enthält.

Verwende das folgende Codebeispiel, um eine Liste spezifischer Accessoires in dem Inventar eines Benutzers zu drucken:


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

Suche auf dem Marktplatz

AvatarEditorService beinhaltet Funktionen und Ereignisse, mit denen du den Roblox-Katalog durchsuchen kannst.Um zu suchen, gib deine Anfrage mit einem CatalogSearchParams Objekt ein, das eine oder mehrere der folgenden Eigenschaften enthält:

EigenschaftBeschreibung
AssetTypenEin Array von Enum.AvatarAssetType wie Enum.AvatarAssetType.BackAccessory.
BündelartenEin Array von Enum.BundleType wie Enum.BundleType.BodyParts.
KategorienfilterEin Enum.CatalogCategoryFilter beschreibend die verschiedenen Kategorienkataloge wie "Vorgestellt" oder "Community-Kreationen". Standardmäßig wird dies auf Enum.CatalogCategoryFilter.None gesetzt
MaxPreisEine Zahl, die den maximalen Preis zum Filtern beschreibt.
MindestpreisEine Zahl, die den Mindestpreis zum Filtern beschreibt. Standardmäßig ist MinPreis 0 .
Suchwort-KennwortEine Zeichenfolge, die gegen Artikelbeschreibungen im Katalog abgefragt wird.
SortierenTypEin Enum.CatalogSortType, das beschreibt, wie die Ergebnisse angeordnet sind. Standardmäßig wird dies auf Enum.CatalogSortType.Relevance festgelegt.
Inklusive OffSaleEin boolescher, der beschreibt, ob die Ergebnisse der Suche ausverkaufte Artikel enthalten. Standardmäßig wird dies auf false gesetzt.
ErstellerIdEine Zahl, um einen bestimmten Creator:inanzugeben. Du kannst entweder eine Benutzer-ID oder eine Gruppen-ID verwenden.
SchöpfernameEine Zeichenfolge, mit der nach Elementen gesucht wird, die von einem bestimmten Creator:inerstellt wurden. Du kannst entweder einen Benutzernamen oder einen Gruppennamen verwenden.

Die folgenden Codebeispiel-Objekte konstruieren ein CatalogSearchParams Objekt für Rücken und Schulter Asset-Typen und leiten dies durch eine SearchCatalog() Anruf durch:


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

Speichere Avatare und Outfits

Wenn er neben einem Avatar-Editor im Spiel verwendet wird, kann AvatarEditorService Avatar-Artikel und -outfits auf die Roblox-Plattform speichern und aktualisieren.Benutzer erhalten keine Katalogartikel, die sie nicht besitzen, wenn sie einen Avatar oder ein Outfit speichern.

Jeder HumanoidDescription kann mit PromptSaveAvatar() in den aktuellen Avatar des Benutzers gespeichert werden. Dies kann Folgendes umfassen:

  • Voreingestellte Avatar-Konfigurationen, die du mit vorhandenen Katalogartikeln erstellt hast.
  • Jede Konfiguration, die der Benutzer über einen Avatar-Editor im Spiel gewählt hat.

Da AvatarEditorService:PromptSaveAvatar() nicht zurückgibt, kannst du das Ergebnis erhalten, indem du auf das AvatarEditorService.PromptSaveAvatarCompleted-Ereignis hörst.

Der folgende Code speichert einen aktuellen HumanoidDescription mit PromptSaveAvatar() und prüft auf ein erfolgreiches AvatarEditorService.PromptSaveAvatarCompleted Ereignis:


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 irgendeine HumanoidDescription als Outfit zu speichern (ohne den aktuellen Avatar des Benutzers zu überschreiben), verwende AvatarEditorService:PromptCreateOutfit().

Sobald es aufgerufen wurde, kannst du das Ergebnis von AvatarEditorService:PromptCreateOutfit() erhalten, indem du das Ereignis AvatarEditorService.PromptCreateOutfitCompleted hörst.

Das folgende Codebeispiel erstellt ein Outfit mit AvatarEditorService:PromptCreateOutfit() und hört auf ein erfolgreiches AvatarEditorService.PromptCreateOutfitCompleted Ereignis:


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

Artikel kaufen

Wenn du entweder einen Avatar oder ein Outfit speicherst, das Katalogartikel verwendet, erhält der Benutzer keine Artikel, die er nicht besitzen.Bevor du einen Avatar oder ein Outfit speicherst, überprüfe, ob der Benutzer das Asset mit MarketplaceService:PlayerOwnsAsset() besitzt und biete ihm die Möglichkeit, das Element mit MarketplaceService:PromptPurchase() zu kaufen.

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