AvatarCreationService
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
AvatarCreationService เป็นบริการที่สนับสนุนผู้สร้างอวตารนักพัฒนา โดยให้วิธีที่สนับสนุนการเรียกใช้การสร้างอวตารจากภายในประสบการณ์
สรุป
วิธีการ
รับข้อมูลเกี่ยวกับกฎที่สินทรัพย์ต้องปฏิบัติตามเพื่อผ่านการตรวจสอบ UGC
รับรายละเอียดโทเค็นการสร้างอวตารสำหรับรายการโทเค็นการสร้างอวตารในครั้งเดียว
- PromptCreateAvatarAsync(tokenId : string,player : Player,humanoidDescription : HumanoidDescription):Tuple
ขอให้ Player ซื้อและสร้างอวตารจาก HumanoidDescription
- ValidateUGCAccessoryAsync(player : Player,accessory : Instance,accessoryType : Enum.AccessoryType):Tuple
สตูดิโอเท่านั้น ทำการตรวจสอบ UGC สําหรับ Enum.AccessoryType
สตูดิโอเท่านั้น ทำการตรวจสอบ UGC สําหรับ Enum.BodyPart
สตูดิโอเท่านั้น ทำการตรวจสอบ UGC สําหรับร่างกายทั้งหมด
อีเวนต์
- AvatarModerationCompleted(outfitId : number,moderationStatus : Enum.ModerationStatus):RBXScriptSignal
คุณสมบัติ
วิธีการ
GetValidationRules
รับข้อมูลเกี่ยวกับกฎที่สินทรัพย์ต้องปฏิบัติตามเพื่อผ่านการตรวจสอบ UGCการตรวจสอบเป็นขั้นตอนที่จำเป็นก่อนที่จะสร้างอวตารและมีการตรวจสอบหลายอย่างที่เกิดขึ้นรวมถึงขีดจํากัดมุมเมช, ขนาดของเทกเจอร์, ขนาดส่วนของร่างกาย, ตําแหน่งของอุปกรณ์เสริม และอื่นๆ
สารบัญการตรวจสอบที่ส่งคืนมีรูปแบบดังต่อไปนี้:
{["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,},...}}
ส่งค่ากลับ
สารานุกรมของกฎการตรวจสอบตามรายละเอียดด้านบน
GenerateAvatar2DPreviewAsync
พารามิเตอร์
ส่งค่ากลับ
GetBatchTokenDetailsAsync
รับรายละเอียดโทเค็นการสร้างอวตารสำหรับรายการโทเค็นการสร้างอวตารในครั้งเดียว (โทเค็นจะถูกสร้างผ่านกระบวนการสร้างโทเค็น )ส่งคืนรายละเอียดของโทเค็นการสร้างอวตารหลายรายการ; แต่ละรายละเอียดโทเค็นเป็นสารานุกรมที่มีช่องที่ระบุในผลลัพธ์ตัวอย่างด้านล่าง:
{["Name"] = "string",["Description"] = "string",["UniverseId"] = 0,["CreatorId"] = 0,["CreatorType"] = Enum.CreatorType.User,["OnSale"] = true,["Price"] = 0,["OffSaleReasons"] = {"string",}}
พารามิเตอร์
รายการ ID ของโทเค็นการสร้างอวตารเพื่อรับรายละเอียด
ส่งค่ากลับ
รายละเอียดของโทเค็นการสร้างอวตารที่ระบุไว้ด้านบน
LoadAvatar2DPreviewAsync
พารามิเตอร์
ส่งค่ากลับ
LoadGeneratedAvatarAsync
พารามิเตอร์
ส่งค่ากลับ
PromptCreateAvatarAsync
ขอให้ Player ซื้อและสร้างอวตารจาก HumanoidDescriptionราคาของการสร้างถูกกำหนดโดยราคาที่กำหนดให้กับโทเค็นการสร้างอวตารโทเค็นการสร้างอวาตาร์นี้จำเป็นสำหรับการซื้อและสร้างร่างกายและสามารถสร้างได้โดยปฏิบัติตามกระบวนการสร้างโทเค็น token creation
การสร้างสรรค์, HumanoidDescription คาดว่าจะรวมทรัพยากรใหม่ที่จะสร้างสำหรับแต่ละส่วนของร่างกาย 6 ( Head , Torso , RightLeg , LeftLeg , RightArm , LeftArm )ตัวเลือกนอกจากนี้ยังสามารถรวมอุปกรณ์เสริมใหม่ Hair ได้
เพื่อสนับสนุนสิ่งนี้ HumanoidDescription ควรรวมเด็ก 6 BodyPartDescription คน (หนึ่งสำหรับแต่ละส่วนของร่างกาย)สำหรับแต่ละ, คุณสมบัติ BodyPartDescription.Instance อ้างถึง Folder ซึ่งรวมถึงทั้งหมดของ MeshPart ตัวอย่างที่ทำให้เป็นส่วนหนึ่งของร่างกาย, ตัวอย่างเช่น ไดเรกทอรี LeftArm ที่มี LeftHand , LeftUpperArm และ LeftLowerArm``Class.MeshPart|MeshParts .คุณสมบัติ BodyPartDescription.BodyPart ควรตั้งเป็น Enum.BodyPart ที่เกี่ยวข้องด้วย
แต่ละส่วนของร่างกาย MeshPart จะต้องรวมถึง:
- An EditableImage .
- A WrapDeformer ที่มี EditableMesh .
หากรวมอุปกรณ์เสริมเช่นผม HumanoidDescription ควรรวมเด็ก AccessoryDescription โดยมี:
- คุณสมบัติ AccessoryDescription.Instance อ้างถึงตัวอย่าง Accessory
- คุณสมบัติ AccessoryDescription.AccessoryType ถูกตั้งค่าเป็น Enum.AccessoryType ที่เกี่ยวข้อง
สุดท้าย HumanoidDescription ควรรวมมิติมนุษย์ของ BodyTypeScale , HeadScale , HeightScale , WidthScale และ ProportionScaleโปรดใส่ใจกับเครื่องชั่งที่ร่างฐานถูกนำมาใช้เพื่อให้ตรงกับเครื่องชั่งที่ให้ไว้กับ HumanoidDescription
พารามิเตอร์
รหัสประจำตัวของโทเค็นการสร้างอวตารโทเค็นต้องถูกต้องในที่จักรวาลที่เรียกวิธีการจากเป็นจักรวาลเดียวกันที่โทเค็นถูกสร้างขึ้นนอกจากนี้ ผู้สร้างโทเค็นต้องรักษาการตรวจสอบรหัสประจำตัวและ Roblox Premiumเพื่อสร้างโทเค็นสำหรับการใช้งานใน API นี้ ให้ทำตามขั้นตอนการสร้างโทเค็น สร้างโทเค็น
The HumanoidDescription การสร้างสรรค์
ส่งค่ากลับ
ลิสต์ที่มีอยู่ในลำดับ:
An Enum.PromptCreateAvatarResult บ่งบอกถึงผลลัพธ์ของการแจ้งให้สร้าง
ผลการค้นหาEnum.PromptCreateAvatarResult.Success จะระบุรหัสบันเดิลในกรณีที่เกิดความล้มเหลวของรายการใดๆ จะระบุถึงข้อความผลลัพธ์ของข้อผิดพลาด
ผลการค้นหาEnum.PromptCreateAvatarResult.Success จะระบุรหัสชุดในกรณีที่เกิดความล้มเหลวในรายการใดๆ จะเป็น nil
ตัวอย่างโค้ด
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
สตูดิโอเท่านั้น ให้ Player และ Instance สําหรับ Enum.AccessoryType ตรวจสอบว่าการตรวจสอบ UGC ผ่านหรือไม่
พารามิเตอร์
การตรวจสอบสถานะของตัวอย่างจะดำเนินการแล้ว
Enum.AccessoryType ตัวอย่างคาดว่าจะเป็น คาดว่า Eyebrow , Eyelash หรือ Hair .
ส่งค่ากลับ
ลิสต์ที่มีอยู่ในลำดับ:
- เป็นไบนารีที่ระบุว่าการตรวจสอบสําเร็จสําหรับอุปกรณ์เสริมหรือไม่
- ตารางตัวเลขที่เลือกได้ ซึ่งรวมถึงเหตุผลในการล้มเหลวหากการตรวจสอบไม่สําเร็จ; มิฉะนั้น nil หากการตรวจสอบประสบความสําเร็จ
ValidateUGCBodyPartAsync
สตูดิโอเท่านั้นให้ Player และ Instance สำหรับ Enum.BodyPart ตรวจสอบว่าการตรวจสอบ UGC ผ่านหรือไม่พารามิเตอร์ instance คาดว่าจะเป็น Folder ในรูปแบบตัวอย่างต่อไปนี้ที่มีความเกี่ยวข้อง MeshParts :
อย่างไรก็ตาม หากคาดว่า bodyPart คือ Enum.BodyPart.Head ฟังก์ชันจะรับเฉพาะ Head``Class.MeshPart โดยตรง
พารามิเตอร์
การตรวจสอบสถานะของตัวอย่างจะดำเนินการแล้ว
Enum.BodyPart ตัวอย่างที่คาดว่าจะเป็น
ส่งค่ากลับ
ลิสต์ที่มีอยู่ในลำดับ:
- เป็นไบนารีที่ระบุว่าการตรวจสอบสําเร็จสําหรับส่วนของร่างกายหรือไม่
- ตารางตัวเลขที่เลือกได้ ซึ่งรวมถึงเหตุผลในการล้มเหลวหากการตรวจสอบไม่สําเร็จ; มิฉะนั้น nil หากการตรวจสอบประสบความสําเร็จ
ValidateUGCFullBodyAsync
สตูดิโอเท่านั้น ให้ Player และ HumanoidDescription ทุกตัวอย่างใน HumanoidDescription จะได้รับการตรวจสอบ
คาดว่า HumanoidDescription จะรวมตัวอย่างที่กําหนดไว้ใน BodyPartDescription เด็กสําหรับแต่ละของ 6 ค่า Enum.BodyPart ที่จําเป็นตัวเลือกได้รวมถึงตัวอย่างที่ตั้งบนเด็ก , และ สำหรับ และ
พารามิเตอร์
HumanoidDescription แทนร่างกายที่ใช้สำหรับการตรวจสอบ
ส่งค่ากลับ
ลิสต์ที่มีอยู่ในลำดับ:
- บูลีนที่ระบุว่าการตรวจสอบสําเร็จสําหรับร่างกายหรือไม่
- ตารางตัวเลขที่เลือกได้ ซึ่งรวมถึงเหตุผลในการล้มเหลวหากการตรวจสอบไม่สําเร็จ; มิฉะนั้น nil หากการตรวจสอบประสบความสําเร็จ