Avatar-Editor-Service

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

Das Avatar-Editor-Service ermöglicht es Ihnen, auf den Avatar eines Benutzers innerhalb einer Erlebniszuzugreifen und Änderungen vorzunehmen. Der Avatar-Editor-Service kann auch auf das Inventar eines Benutzers zugreifen und den Marktplatz , um Outfits und Kauf von Avatar-Artikeln zum Benutzer zu speichern.

Wir empfehlen die Einführung des Avatar-Editors-Dienstes mit einem In-Game-Avatar-Editor für eine vollständige Erlebnis. Siehe den Simple Avatar Editor Demo-Referenzort für ein Beispiel dieser Funktion.

Um den Avatar-Editor-Dienst zu verwenden, musst du zuerst Zugriff auf die Registerkarte "Inventar" auf das Inventar des Benutzers anfordern. Nachdem der Zugriff erfolgreich gewährt ist, kannst du die folgenden Aktionen ausführen:

Zugriff auf Anfrage

Um Zugriff auf das Inventar eines Benutzers zu erhalten, musst du den Benutzer dazu bringen, Zugriff durch PromptAllowInventoryReadAccess() zu erlauben. Du musst diesen Anfrage einmal pro Sitzung durchführen.

Verwenden Sie das folgende Codebeispiel, um die Zugriffsanfrage zu starten 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 Anfrage:

Sobald der Benutzer die Anfrage angenommen hat, kann der AvatarEditorService Zugriff auf das Inventar des Benutzers beginnen.

Lesen Sie das Benutzerinventar

Sobald der Zugriff durch den Benutzer gewährt ist, kannst du sein Inventar mit der GetInventory() Funktion lesen, die eine Reihe von AvatarAssetTypes bietet, um sie zu filtern. Diese Funktion gibt ein InventoryPages -Objekt zurück, das das im Besitz des Benutzers befindliche Item enthält.

Verwenden Sie das folgende Codebeispiel, um eine Liste von spezifischen Zubehör in einem Inventarzu 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

Marktplatz suchen

AvatarEditorService enthält Funktionen und Ereignisse, mit denen Sie den Roblox-Katalog durchsuchen können. Um zu suchen, geben Sie Ihre Anfrage mit einem CatalogSearchParams -Objekt, das eine oder mehrere der folgenden Eigenschaften enthält:

EigenschaftBeschreibung
Asset-TypenEin Array von Enum.AvatarAssetType wie zum Beispiel Menu.AvatarAssetType.BackAccessory.
BündelTypenEin Array von Enum.BundleType wie z. B. Enum.BundleType.BodyParts.
Kategorie-FilterEin Enum.CatalogCategoryFilter , der die verschiedenen Kategorien wie "Featured" oder "Community Creations" beschreibt. Standardmäßig ist dies auf Enum.CatalogCategoryFilter.None eingestellt.
MaxPreisEin integer, der den maximalen Preis zum Filtern beschreibt.
MinPreisEin integer, der den Mindestpreis beschreibt, um zu Filter. Standardmäßig ist MinPrice 0 .
SuchbegriffEine Strings, um auf Artikelbeschreibungen im Katalog zu suchen.
SortTypEin Enum.CatalogSortType, das beschreibt, wie die Ergebnisse sortiert sind. Standardmäßig ist dies auf Enum.CatalogSortType.Relevance eingestellt.
InклюceOffSaleEinBoolean, der beschreibt, ob die Ergebnisse der Suche off-sale-Items enthalten. Standardmäßig ist dies auf false gesetzt.
CreatorIdEine Zahl, um einen bestimmten Creator:inanzugeben. Du kannst entweder einen UserId oder eine GroupId verwenden.
CreatorNameEine Sicherung, die nach Gegenständen von einem bestimmten Creator:insucht. Du kannst entweder einen Benutzernamen oder einen Gruppennamen verwenden.

Das folgende Codebeispiel erstellt ein Datatype.CatalogSearchParams -Objekt für Rücken- und 1> Schulter-1>-Assets und überträgt dies durch eine 4> Class.AvatarEditorService:SearchCatalog()|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 er neben einem Avatar-Editor verwendet wird, kann AvatarEditorService Avatar-Items und -Outfits auf die Roblox-Plattform speichern und aktualisieren. Benutzer erhalten keine Katalog-Artikel, die sie nicht besitzen, wenn sie einen Avatar oder ein Outfit speichern.

Jede HumanoidDescription kann in den Avatar des Benutzers mit PromptSaveAvatar() gespeichert werden. Dies kann beinhalten:

  • Voreingestellte Avatar-Konfigurationen, die Sie mit bestehenden Katalog-Artikeln erstellt haben.
  • Jede Konfiguration, die der Benutzer über einen In-Game-Avatar-Editor ausgewählt hat.

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

Der folgende Code speichert eine aktuelle HumanoidDescription mit der Verwendung von PromptSaveAvatar() und prüft für 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 ein HumanoidDescription als Outfit zu speichern (ohne den aktuellen Avatar des Benutzers zu überschreiben), verwenden Sie AvatarEditorService:PromptCreateOutfit() .

Nach dem Aufrufen 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

Kauf von Gegenständen

Wenn Sie entweder einen Avatar oder ein Outfit, das Katalog-Artikel verwendet, speichern, erhält der Benutzer keine Artikel, die er nicht besitzen. Bevor Sie einen Avatar oder ein Outfit speichern, überprüfen Sie, ob der Benutzer das Asset mit MarketplaceService:PlayerOwnsAsset() besitzt und bieten Sie eine Option, um das Item mit MarketplaceService:PromptPurchase() zu kaufen.

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