AvatarCreationService
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
AvatarCreationService jest usługą, która wspiera twórców awatarów, zapewniając metody wspierające wskazywanie tworzenia awatara z wnętrza doświadczeń.
Podsumowanie
Metody
Zdobywa dane dotyczące zasad, których aktywa muszą przestrzegać, aby przejść weryfikację UGC.
Zdobywa szczegóły tokenu tworzenia awatara dla listy tokenów tworzenia awatara naraz
- PromptCreateAvatarAsync(tokenId : string,player : Player,humanoidDescription : HumanoidDescription):Tuple
Wymaga od Player kupienia i stworzenia awatara z HumanoidDescription .
- ValidateUGCAccessoryAsync(player : Player,accessory : Instance,accessoryType : Enum.AccessoryType):Tuple
Tylko studio. Wykonuje walidację UGC dla Enum.AccessoryType .
Tylko studio. Wykonuje walidację UGC dla Enum.BodyPart .
Tylko studio. Wykonuje walidację UGC dla całego ciało.
Zdarzenia
- AvatarModerationCompleted(outfitId : number,moderationStatus : Enum.ModerationStatus):RBXScriptSignal
Właściwości
Metody
GetValidationRules
Zdobywa dane dotyczące zasad, których aktywa muszą przestrzegać, aby przejść weryfikację UGC.Weryfikacja jest niezbędnym krokiem przed tworzeniem awatarów i istnieje wiele różnych kontroli, które występować, w tym ograniczenia trójkąta siatki, rozmiary tekstur, ograniczenia rozmiaru części ciała, pozycje załączników i wiele więcej.
Zwrócony słownik zasad walidacji przyjmuje następną formę:
{["MeshRules"] = {["BodyPartMaxTriangles"] = {Enum.AssetType.DynamicHead: number,Enum.AssetType.LeftArm: number,Enum.AssetType.RightArm: number,Enum.AssetType.Torso: number,Enum.AssetType.LeftLeg: number,Enum.AssetType.RightLeg: number,},["AccessoryMaxTriangles"]: number,["MeshVertColor"]: Color3,["CageMeshMaxDistanceFromRenderMesh"]: number,},["TextureRules"] = {["MaxTextureSize"]: number,},["BodyPartRules"] = {[Enum.AssetType.DynamicHead] = {["Bounds"] = {["Classic"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsSlender"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsNormal"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},},["SubParts"] = {["Head"] = {["NeckRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["FaceFrontAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["HatAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["HairAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["FaceCenterAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},},},[Enum.AssetType.LeftArm] = {["Bounds"] = {["Classic"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsSlender"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},["ProportionsNormal"] = {["MinSize"]: Vector3,["MaxSize"]: Vector3,},},["SubParts"] = {["LeftHand"] = {["LeftWristRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftGripAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},["LeftUpperArm"] = {["LeftShoulderRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftShoulderAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftElbowRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},["LeftLowerArm"] = {["LeftElbowRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},["LeftWristRigAttachment"] = {["LowerBound"]: Vector3,["UpperBound"]: Vector3,},},},},...},["AccessoryRules"] = {[Enum.AssetType.HairAccessory] = {["Attachments"] = {{["Size"]: Vector3,["Offset"]: Vector3,["Name"]: string,},},["RigidAllowed"]: boolean,},...}}
Zwroty
Słownik zasad walidacji szczegółowo opisany powyżej.
GenerateAvatar2DPreviewAsync
Parametry
Zwroty
GetBatchTokenDetailsAsync
Zdobywa szczegóły tokenu tworzenia awatara dla listy tokenów tworzenia awatara naraz (tokeny są generowane za pomocą procesu tworzenia tokenów tokenami).Zwraca listę szczegółów tworzenia awatara; każdy szczegół jest słownikiem z polami wskazanymi w wyniku przykładu poniżej:
{["Name"] = "string",["Description"] = "string",["UniverseId"] = 0,["CreatorId"] = 0,["CreatorType"] = Enum.CreatorType.User,["OnSale"] = true,["Price"] = 0,["OffSaleReasons"] = {"string",}}
Parametry
Lista ID tokenów tworzenia awatara, aby uzyskać szczegóły.
Zwroty
Lista szczegółów tokenu tworzenia awatara, jak opisano powyżej.
LoadAvatar2DPreviewAsync
Parametry
Zwroty
LoadGeneratedAvatarAsync
Parametry
Zwroty
PromptCreateAvatarAsync
Wymaga od Player kupienia i stworzenia awatara z HumanoidDescription .Cena tworzenia jest określana przez cenę przypisaną do tokenu tworzenia awatara.Ten token tworzenia awatara jest wymagany do zakupu i tworzenia ciała i może być generowany poprzez przestrzeganie procesu tworzenia tokenów.
W przypadku dziełoawatara oczekuje się, że HumanoidDescription obejmuje nowe zasoby, które należy stworzyć dla każdej z 6 części ciała (Head , Torso , RightLeg , LeftLeg , RightArm , LeftArm).Opcjonalnie może również zawierać nowy Hair akcesorium.
Aby to wspierać, HumanoidDescription powinno zawierać 6 dzieci BodyPartDescription (po jednym dla każdej części ciała).Dla każdego, właściwość odnosi się do , która obejmuje wszystkie instancje , które tworzą część ciała, na przykład katalog , który zawiera , i .Właściwość BodyPartDescription.BodyPart powinna również zostać ustawiona na odpowiednią Enum.BodyPart.
Każda część ciała MeshPart będzie również musiała zawierać:
- An EditableImage .
- A WrapDeformer z EditableMesh.
Jeśli włącza się akcesorium, takie jak włosy, HumanoidDescription powinno zawierać dziecko AccessoryDescription, gdzie:
- Właściwość AccessoryDescription.Instance odnosi się do instancji Accessory.
- Właściwość AccessoryDescription.AccessoryType jest ustawiona na odpowiednią Enum.AccessoryType.
Wreszcie, HumanoidDescription powinno zawierać skale humanoidów BodyTypeScale , HeadScale , HeightScale , WidthScale i ProportionScale .Bądź świadomy skal, z którymi zaimportowano podstawowe ciało, aby pasowały do skal dostarczonych do HumanoidDescription.
Parametry
ID tokenu tworzenia awatara.Token musi być ważny, ponieważ wszechświat, z którego metoda jest wzywana, jest tym samym wszechświatem, dla którego token został stworzony.Ponadto twórca tokenów musi utrzymywać weryfikację tożsamości i Roblox Premium.Aby utworzyć token do wykorzystania w tym API, postępuj zgodnie z procesem tworzenia tokenów.
The Player przeznaczony do prezentacji z powiadomieniem o tworzeniu
The HumanoidDescription z awatara przeznaczone do dzieło.
Zwroty
Tuple zawierający, w kolejności:
An Enum.PromptCreateAvatarResult wskazujący wynik polecenia tworzenia.
Wynik ciągu.W przypadku Enum.PromptCreateAvatarResult.Success będzie to oznaczać ID pakietu.W przypadku każdego awarii enumeracji wskaże to wynikującą wiadomość o błędzie.
Wtórny opcjonalny wynik ciągu.W przypadku Enum.PromptCreateAvatarResult.Success będzie to oznaczać ID stroju.W przypadku jakiegokolwiek awarii enumeracji będzie to nil .
Przykłady kodu
The following code populates a HumanoidDescription in the expected format, prompts for avatar creation, and responds to the result.
local AvatarCreationService = game:GetService("AvatarCreationService")
export type BodyPartInfo = {
bodyPart: Enum.BodyPart,
instance: Instance, --Folder with Created MeshParts
}
export type BodyPartList = { BodyPartInfo }
local function publishAvatar(bodyPartInstances: BodyPartList, player: Player, tokenId: string)
local humanoidDescription = Instance.new("HumanoidDescription")
for _, bodyPartInfo in bodyPartInstances do
local bodyPartDescription = Instance.new("BodyPartDescription")
bodyPartDescription.Instance = bodyPartInfo.instance
bodyPartDescription.BodyPart = bodyPartInfo.bodyPart
bodyPartDescription.Parent = humanoidDescription
end
local pcallSuccess, result, resultMessage = pcall(function()
return AvatarCreationService:PromptCreateAvatarAsync(tokenId, player, humanoidDescription)
end)
if pcallSuccess then
if result == Enum.PromptCreateAvatarResult.Success then
print("Successfully uploaded with BundleId: ", resultMessage)
else
print("Unsuccessfully uploaded with error message:", resultMessage)
end
else
print("Avatar failed to create.")
end
end
ValidateUGCAccessoryAsync
Tylko studio. Biorąc pod uwagę Player i Instance dla Enum.AccessoryType, określa, czy przejdzie weryfikacja UGC.
Parametry
Weryfikacja instancji jest uruchomiona.
Enum.AccessoryType oczekuje się, że instancja będzie. Oczekuje Eyebrow , Eyelash lub Hair .
Zwroty
Tuple zawierający, w kolejności:
- Boolean wskazujący, czy weryfikacja zakończyła się sukcesem dla akcesorium.
- Opcjonalny stół ciągów. Obejmuje powody awarii, jeśli weryfikacja nie powiodła się; w przeciwnym razie nil jeśli weryfikacja powiodła się sukcesem.
ValidateUGCBodyPartAsync
Tylko studio.Biorąc pod uwagę Player i Instance dla Enum.BodyPart, określa, czy przejdzie weryfikacja UGC.Parametr instance oczekuje się jako Folder w następującym formacie przykładu z odpowiednim MeshParts :
Jeśli jednak oczekiwany bodyPart jest Enum.BodyPart.Head , funkcja bierze pojedynczą Head``Class.MeshPart bezpośrednio.
Parametry
Weryfikacja instancji jest uruchomiona.
Enum.BodyPart oczekuje się, że instancja będzie.
Zwroty
Tuple zawierający, w kolejności:
- Boolean wskazujący, czy weryfikacja zakończyła się sukcesem dla części ciała.
- Opcjonalny stół ciągów. Obejmuje powody awarii, jeśli weryfikacja nie powiodła się; w przeciwnym razie nil jeśli weryfikacja powiodła się sukcesem.
ValidateUGCFullBodyAsync
Tylko studio. Biorąc pod uwagę Player i HumanoidDescription, wszystkie instancje w HumanoidDescription zostaną zweryfikowane.
Oczekuje się, że HumanoidDescription będzie zawierać instancje ustawione na BodyPartDescription dzieciach dla każdej z 6 wymaganych wartości Enum.BodyPart.Opcjonalnie może obejmować instancje ustawione na AccessoryDescription dzieciach dla Eyebrow , Eyelash i Hair``Enum.AccessoryType|AccessoryTypes .
Parametry
HumanoidDescription reprezentujący ciało, na którym wykonywana jest walidacja.
Zwroty
Tuple zawierający, w kolejności:
- Boolean wskazujący, czy weryfikacja zakończyła się sukcesem dla ciało.
- Opcjonalny stół ciągów. Obejmuje powody awarii, jeśli weryfikacja nie powiodła się; w przeciwnym razie nil jeśli weryfikacja powiodła się sukcesem.