สร้างโลกของคุณเอง
ผู้เล่นและตัวละคร: ขั้นสูง

เปลี่ยนชุดผู้เล่นท้องถิ่น

15min

คุณสามารถเปลี่ยนชุดของผู้เล่นท้องถิ่นเป็นชุดที่คุณมีได้

ต้องติดตั้ง ZEPETO.Character.Controller เวอร์ชัน 1.11.3 หรือสูงกว่า

การใช้ API SetCostume

วิธีการ

API

คำอธิบาย

SetCostume($itemCode: string, $complete?: System.Action):void;

ใส่รหัสรายการ (item id) เป็นค่าพารามิเตอร์เพื่อเปลี่ยนชุดของผู้เล่นท้องถิ่น รับการเรียกกลับเมื่อการเปลี่ยนชุดเสร็จสิ้น



ตัวอย่างการเปลี่ยนชุดผู้เล่นท้องถิ่น

คุณสามารถเปลี่ยนชุดของผู้เล่นท้องถิ่นโดยใช้ SetCostume().

นี่คือตัวอย่างโค้ดที่สร้างผู้เล่นท้องถิ่นเมื่อฉากเริ่มต้น และเปลี่ยนชุดด้วยรหัสไอเท็มเฉพาะเมื่อผู้เล่นท้องถิ่นถูกสร้างขึ้น

1) เพิ่ม ZEPETO > Typescript และตั้งชื่อสคริปต์ว่า ChangeLocalPlayerCostume

เขียนสคริปต์ตัวอย่างตามด้านล่าง

ChangeLocalPlayerCostume.ts


คำอธิบายสคริปต์

  • สคริปต์นี้เปลี่ยนชุดของผู้เล่นท้องถิ่นตามรหัสรายการที่กำหนดไว้
  • เมื่อฉากเริ่มต้น ให้สร้างผู้เล่นด้วยรหัสผู้ใช้ที่ระบุและใช้ CreatePlayerWithUserId() ฟังก์ชันนี้
  • มีการเพิ่มตัวฟังเหตุการณ์ OnAddedLocalPlayer เพื่อให้เมื่อมีการเพิ่มผู้เล่นท้องถิ่น เหตุการณ์นั้นจะถูกเรียกใช้ และ ChangeCostume() เมธอดจะถูกเรียกเพื่อเปลี่ยนชุด
  • เข้าถึงอินสแตนซ์ผู้เล่นท้องถิ่นผ่านคุณสมบัติ LocalPlayer และเปลี่ยนชุดโดยใช้รหัสรายการที่ให้ไว้ เมื่อการเปลี่ยนชุดเสร็จสิ้น จะมีการบันทึกข้อความ Set Costume Complete ซึ่งจะแสดงถึงการเปลี่ยนแปลงที่สำเร็จ



📘 กรุณาอ้างอิงคู่มือหุ่นจำลองเกี่ยวกับวิธีการตรวจสอบรหัสรายการ[ZEPETO Mannequin]



2) หากคุณกดปุ่ม [▶︎(เล่น)] เพื่อรันมัน คุณจะเห็นว่าผู้เล่นท้องถิ่นถูกสร้างขึ้นและเปลี่ยนด้วยชุดเครื่องแต่งกายตามรหัสรายการที่ป้อนเข้าไป

Document image


ก่อนการเปลี่ยนชุดเครื่องแต่งกาย (ซ้าย), หลังการเปลี่ยนชุดเครื่องแต่งกาย (ขวา)



  • หากรายการเป็นผลิตภัณฑ์ที่มีระยะเวลาคงที่ จะต้องสวมใส่หลังจากตรวจสอบว่าหมดอายุหรือไม่ สำหรับรายการที่หมดอายุ จะมีบันทึกข้อผิดพลาดที่เรียกว่า รายการหมดอายุ ถูกเรียกว่า.
  • หากรายการเป็นผลิตภัณฑ์ที่จ่ายด้วย Zem จะต้องสวมใส่หลังจากตรวจสอบว่าผู้เล่นท้องถิ่นเป็นเจ้าของหรือไม่ สำหรับรายการที่ไม่มีเจ้าของ จะมีบันทึกข้อผิดพลาดที่เรียกว่า ไม่มี ItemCode ถูกเรียกว่า.





ตัวอย่างการโหลดรายการเสื้อผ้าและการเปลี่ยนชุด

คุณสามารถดึงรายการเสื้อผ้าโดยใช้ GetMyItemListAsync(), ซึ่งให้ข้อมูลเกี่ยวกับรายการที่ผู้ใช้เป็นเจ้าของ.

ตัวอย่างต่อไปนี้แสดงวิธีการแสดงชุดเครื่องแต่งกายที่ผู้เล่นท้องถิ่นเป็นเจ้าของบนหน้าจอและให้พวกเขาเลือกและเปลี่ยนชุดเครื่องแต่งกายได้



ขั้นตอนที่ 1. สร้าง UI รายการเสื้อผ้า

ก่อนอื่น สร้างทรัพยากร UI รายการที่จะแสดงภาพขนาดย่อและชื่อของรายการเสื้อผ้า ทรัพยากรที่ต้องสร้างรวมถึง:

ขั้นตอนที่ 1-1. สร้าง Item Prefab

หลังจากโหลดรายการเสื้อผ้าที่ผู้เล่นท้องถิ่นมี เราจะสร้างรายการรายการใน UI Item Prefab ทำหน้าที่เป็นแหล่งข้อมูลสำหรับแต่ละรายการที่ถูกสร้างขึ้น

เมื่อสร้าง Item Prefab ขึ้นมา จะมีภาพขนาดย่อและชื่อรายการแสดงใน UI.

Item Prefab ประกอบด้วยองค์ประกอบดังต่อไปนี้.

  1. วัตถุ Button_thumbnail: นี่คือวัตถุที่มีส่วนประกอบ Raw Image และส่วนประกอบ Button ลงทะเบียนเพื่อแสดงภาพขนาดย่อของรายการ.
  2. วัตถุ Text_name: วัตถุส่วนประกอบ Text ที่ชื่อรายการจะแสดงอยู่.
Document image




ขั้นตอนที่ 1-2. การตั้งค่า Canvas

Canvas คือหน้าจอ UI ที่แสดงเมื่อสร้าง Item Prefab ขึ้นมา แนะนำให้สร้าง Scroll View ภายใน Canvas นี้เพื่อให้สามารถดึงรายการขนาดใหญ่ได้.

วัตถุ Scroll View ภายใน Canvas ถูกตั้งค่าไว้ดังนี้.

  • วัตถุ Scroll View ถูกตั้งค่าให้อนุญาตการเลื่อนแนวตั้งเท่านั้น
  • วัตถุ Content ตั้งค่าคอมโพเนนต์ต่อไปนี้:
    • กลุ่มเลย์เอาต์แบบกริด:
      • ขนาดเซลล์ : x: 150, Y: 150
      • ข้อจำกัด : จำนวนคอลัมน์ที่คงที่
      • จำนวนข้อจำกัด : 5
Document image




ขั้นตอนที่ 2. สคริปต์เพื่อโหลดรายการและเปลี่ยนชุด

ขั้นตอน 2-1. เขียนสคริปต์

  • เพิ่ม ZEPETO > Typescript และเปลี่ยนชื่อสคริปต์เป็น MyItemList.
  • เขียนสคริปต์ตัวอย่างตามด้านล่าง.
MyItemList.ts


คำอธิบายสคริปต์

  • ในวิธี Start ผู้เล่นใหม่ถูกสร้างขึ้นโดยใช้ ZepetoPlayers.instance.CreatePlayerWithUserId()และ CoGetMyItem() coroutine จะถูกเรียกใช้เมื่อผู้เล่นท้องถิ่นถูกเพิ่มเข้าไป.
  • coroutine ของ CoGetMyItem() ใช้ ShopService.GetMyContentItemListAsync() เพื่อดึงรายการของรายการที่ผู้เล่นเป็นเจ้าของ.
    • ขอรายการของรายการทั้งหมดในทุกหมวดหมู่ผ่าน ItemKeyword.all รอจนกว่าคำขอจะเสร็จสิ้นโดยใช้ yield new WaitUntil(() => requestItemList.keepWaiting == false).
    • ถ้าคำขอสำเร็จ requestItemList.responseData.isSuccess, ทำการวนซ้ำผ่านรายการของ contentItems และดึงภาพขนาดย่อของแต่ละรายการโดยใช้ GetThumbnailAsync().
    • สร้างองค์ประกอบ UI สำหรับแต่ละรายการโดยใช้ itemPrefab ที่ให้มา และตั้งค่าภาพขนาดย่อและ ID ปุ่มสำหรับแต่ละรายการถูกสร้างขึ้น และตั้งค่าให้เรียก SetItemButton() โดยใช้ ID ของรายการเป็นอาร์กิวเมนต์.
  • วิธีการ SetItemButton() จะถูกเรียกเมื่อปุ่มที่เกี่ยวข้องกับรายการถูกคลิก.
    • ใช้รายการที่เลือกเป็นชุดเครื่องแต่งกายของตัวละครผู้เล่นโดยใช้ ZepetoPlayers.instance.LocalPlayer.SetCostume().
    • เมื่อชุดเครื่องแต่งกายถูกเปลี่ยนสำเร็จ ข้อความบันทึกที่บอกว่า Set Costume Complete จะถูกแสดงพร้อมกับรหัสรายการ.



📘 เคล็ดลับ



❗️ ระวัง รายการเสื้อผ้าที่ดึงมาผ่าน ShopService.GetMyContentItemListAsync() มีผลิตภัณฑ์ที่หมดอายุและมีเวลาจำกัด ดังนั้น รายการที่หมดอายุ สามารถเรียกดูบันทึกข้อผิดพลาดได้.



ขั้นตอน 2-2. การตั้งค่าตรวจสอบ MyItemList

ลงทะเบียน itemPrefab ที่สร้างขึ้นในขั้นตอนที่ 1 ใน Item Prefab ของคอมโพเนนต์ที่ MyItemList ถูกนำไปใช้ และลงทะเบียน Canvas ใน itemCanvas.

Document image




ขั้นตอนที่ 3. รัน

หากคุณกดปุ่มเล่นเพื่อรัน มุมมอง UI ของแคนวาสจะแสดงรายการของที่เป็นเจ้าของโดยผู้เล่นท้องถิ่น และคุณจะเห็นว่าของเปลี่ยนเป็นชุดที่ตรงกันเมื่อเลือก

Document image




❗️ ระวัง

  • API การสวมชุดนี้ใช้ได้เฉพาะกับผู้เล่นท้องถิ่นและไม่รองรับการซิงโครไนซ์แบบผู้เล่นหลายคนในขณะนี้
  • การซิงโครไนซ์ชุดแบบผู้เล่นหลายคนจะมีให้ในอนาคต