บริการแก้ไขอวาตาร์ให้คุณเข้าถึงและทำการเปลี่ยนแปลงอวาตาร์ของผู้ใช้ภายในเกม บริการแก้ไขอวาตาร์ยังสามารถเข้าถึงสินค้าคงคลังของผู้ใช้และ ตลาด เพื่อบันทึกรูปแบบเสื้อผ้าและซื้อไอเท็มอวาตาร์ไปยังบัญชีของผู้ใช้
เราขอแนะนำให้ใช้งานบริการแก้ไขอวาตาร์ร่วมกับเครื่องมือแก้ไขอวาตาร์ในเกมเพื่อประสบการณ์การปรับแต่งตัวละครที่สมบูรณ์ ดูตัวอย่างที่ Simple Avatar Editor Demo เป็นที่อ้างอิงสำหรับคุณสมบัตินี้
ในการเริ่มใช้งานบริการแก้ไขอวาตาร์ คุณต้อง ขอการเข้าถึง ไปยังสินค้าคงคลังของผู้ใช้ หลังจากได้รับการเข้าถึงแล้ว คุณสามารถทำการกระทำดังต่อไปนี้:
- อ่านสินค้าคงคลังของผู้ใช้ เพื่อรับรายการของไอเท็มที่เป็นเจ้าของโดยผู้ใช้
- ค้นหาตลาด โดยใช้คุณสมบัติต่าง ๆ เพื่อกรองและจัดเรียง
- สวมใส่ไอเท็มอวาตาร์และบันทึกรูปแบบเสื้อผ้า ไปยังอวาตาร์ของผู้ใช้
- ขอให้ผู้ใช้ซื้อ ไอเท็มในตลาด
ขอการเข้าถึง
ในการเริ่มเข้าถึงสินค้าคงคลังของผู้ใช้ คุณต้องขอให้ผู้ใช้อนุญาตการเข้าถึงผ่าน PromptAllowInventoryReadAccess() คุณต้องทำคำขอนี้เพียงครั้งเดียวต่อเซสชั่น
ใช้ตัวอย่างโค้ดต่อไปนี้เพื่อเริ่มแท็บการเข้าถึงและฟังการตอบสนองของผู้ใช้:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- การเข้าถึงได้รับอนุญาต!end
ผู้ใช้จะได้รับแท็บดังต่อไปนี้:

เมื่อผู้ใช้ยอมรับแท็บ AvatarEditorService สามารถเริ่มเข้าถึงสินค้าคงคลังของผู้ใช้
อ่านสินค้าคงคลังของผู้ใช้
เมื่อได้รับการเข้าถึงจากผู้ใช้ คุณสามารถอ่านสินค้าคงคลังของพวกเขาด้วยฟังก์ชัน GetInventory() โดยส่งมอบอาร์เรย์ของ AvatarAssetTypes เพื่อกรอง ฟังก์ชันนี้คืนค่าวัตถุ InventoryPages ที่มีไอเท็มที่ผู้ใช้เป็นเจ้าของ
ใช้ตัวอย่างโค้ดต่อไปนี้เพื่อพิมพ์รายการของอุปกรณ์เสริมเฉพาะในสินค้าคงคลังของผู้ใช้:
local AvatarEditorService = game:GetService("AvatarEditorService")AvatarEditorService:PromptAllowInventoryReadAccess()local result = AvatarEditorService.PromptAllowInventoryReadAccessCompleted:Wait()if result == Enum.AvatarPromptResult.Success then-- การเข้าถึงได้รับอนุญาต!local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory,Enum.AvatarAssetType.WaistAccessory}local pagesObject = AvatarEditorService:GetInventory(assetTypes)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)endend
ค้นหาตลาด
AvatarEditorService มีฟังก์ชันและเหตุการณ์ที่ให้คุณค้นหาหมวดหมู่ใน Roblox สำหรับการค้นหา ให้ส่งคำค้นของคุณด้วยวัตถุ CatalogSearchParams ที่รวมคุณสมบัติหนึ่งหรือมากกว่า ดังนี้:
| คุณสมบัติ | คำอธิบาย |
|---|---|
| AssetTypes | อาร์เรย์ของ Enum.AvatarAssetType เช่น Enum.AvatarAssetType.BackAccessory. |
| BundleTypes | อาร์เรย์ของ Enum.BundleType เช่น Enum.BundleType.BodyParts. |
| CategoryFilter | Enum.CatalogCategoryFilter ที่อธิบายหมวดหมู่หมวดหมู่ต่างๆในตลาด เช่น "Featured" หรือ "Community Creations" โดยค่าเริ่มต้นกำหนดให้เป็น Enum.CatalogCategoryFilter.None |
| MaxPrice | จำนวนเต็มที่อธิบายราคาสูงสุดสำหรับการกรอง |
| MinPrice | จำนวนเต็มที่อธิบายราคาต่ำสุดสำหรับการกรอง โดยค่าเริ่มต้น MinPrice คือ 0. |
| SearchKeyword | สตริงเพื่อค้นหาตามคำอธิบายไอเท็มในตลาด |
| SortType | Enum.CatalogSortType ที่อธิบายวิธีการจัดเรียงผลลัพธ์ โดยค่าเริ่มต้นกำหนดให้เป็น Enum.CatalogSortType.Relevance. |
| IncludeOffSale | บูลีนที่อธิบายว่าผลลัพธ์ของการค้นหารวมไอเท็มที่ไม่ขายอยู่หรือไม่ โดยค่าเริ่มต้นกำหนดให้เป็น false. |
| CreatorId | จำนวนเต็มที่ระบุผู้สร้างเฉพาะที่กำหนด คุณสามารถใช้ UserId หรือ GroupId ใดก็ได้ |
| CreatorName | สตริงที่ใช้ในการค้นหาตามไอเท็มที่สร้างโดยผู้สร้างที่กำหนด คุณสามารถใช้ชื่อผู้ใช้หรือชื่อกลุ่ม |
ตัวอย่างโค้ดต่อไปนี้สร้างวัตถุ CatalogSearchParams สำหรับประเภทสินทรัพย์ Back และ Shoulder และส่งผ่านในการเรียก SearchCatalog():
local AvatarEditorService = game:GetService("AvatarEditorService")local catalogSearchParams = CatalogSearchParams.new()local assetTypes = {Enum.AvatarAssetType.BackAccessory,Enum.AvatarAssetType.ShoulderAccessory}catalogSearchParams.AssetTypes = assetTypeslocal pagesObject =--การทำงานนี้คืนค่าวัตถุ CatalogPages ที่มีผลลัพธ์อยู่AvatarEditorService:SearchCatalog(catalogSearchParams)local currentPage = pagesObject:GetCurrentPage()for _, item in currentPage doprint(item)end
บันทึกอวาตาร์และรูปแบบเสื้อผ้า
เมื่อใช้งานร่วมกับเครื่องมือแก้ไขอวาตาร์ภายในเกม AvatarEditorService สามารถบันทึกและอัปเดตไอเท็มอวาตาร์และรูปแบบเสื้อผ้าไปยังแพลตฟอร์ม Roblox ผู้ใช้จะไม่ได้รับไอเท็มในตลาดที่พวกเขาไม่เป็นเจ้าของเมื่อบันทึกอวาตาร์หรือรูปแบบเสื้อผ้า
คุณสามารถบันทึก HumanoidDescription ไปยังอวาตาร์ปัจจุบันของผู้ใช้ด้วย PromptSaveAvatar() โดยอาจรวมถึง:
- การปรับแต่งอวาตาร์ที่กำหนดไว้ล่วงหน้าซึ่งคุณได้สร้างขึ้นจากไอเท็มในตลาดที่มีอยู่
- การปรับแต่งใด ๆ ที่ผู้ใช้เลือกผ่านเครื่องมือแก้ไขอวาตาร์ในเกม

เนื่องจาก AvatarEditorService:PromptSaveAvatar() ไม่สามารถทำให้เกิดการหยุดรอได้ คุณจึงสามารถรับผลลัพธ์โดยการฟังเหตุการณ์ AvatarEditorService.PromptSaveAvatarCompleted
โค้ดต่อไปนี้จะบันทึก HumanoidDescription ปัจจุบันด้วยการใช้ PromptSaveAvatar() และตรวจสอบการเกิดเหตุการณ์ AvatarEditorService.PromptSaveAvatarCompleted ที่สำเร็จ:
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal 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-- อวาตาร์ถูกบันทึก!end
ในการบันทึก HumanoidDescription ใด ๆ เป็นรูปแบบเสื้อผ้า (โดยไม่เขียนทับอวาตาร์ปัจจุบันของผู้ใช้) ให้ใช้ AvatarEditorService:PromptCreateOutfit()

เมื่อเรียกใช้งานแล้ว คุณสามารถรับผลลัพธ์ของ AvatarEditorService:PromptCreateOutfit() โดยการฟังเหตุการณ์ AvatarEditorService.PromptCreateOutfitCompleted
ตัวอย่างโค้ดต่อไปนี้สร้างรูปแบบเสื้อผ้าด้วย AvatarEditorService:PromptCreateOutfit() และฟังการเกิดเหตุการณ์ AvatarEditorService.PromptCreateOutfitCompleted ที่สำเร็จ:
local AvatarEditorService = game:GetService("AvatarEditorService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal 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-- รูปแบบเสื้อผ้าถูกบันทึก!end
ซื้อไอเท็ม
เมื่อบันทึกอวาตาร์หรือรูปแบบเสื้อผ้าที่ใช้ไอเท็มในตลาด ผู้ใช้จะไม่ได้รับไอเท็มใด ๆ ที่พวกเขาไม่เป็นเจ้าของ ก่อนที่จะบันทึกอวาตาร์หรือรูปแบบเสื้อผ้า ให้ตรวจสอบว่าผู้ใช้เป็นเจ้าของสินทรัพย์ด้วย MarketplaceService:PlayerOwnsAsset() และให้ตัวเลือกในการซื้อไอเท็มด้วย MarketplaceService:PromptPurchase()
หากคุณไม่ต้องการใช้งานการซื้อไอเท็ม คุณสามารถอนุญาตให้ผู้ใช้ทำเครื่องหมายไอเท็มที่ไม่เป็นเจ้าของเป็นรายการโปรดด้วย AvatarEditorService:PromptSetFavorite()