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

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

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 import { spawninfo, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script'; import { worldservice } from 'zepeto world'; export default class changelocalplayercostume extends zepetoscriptbehaviour { public itemcode string; // เมื่อฉากเริ่มต้น สร้างผู้เล่นด้วย id ผู้ใช้ที่ให้มาและเปลี่ยนชุดของพวกเขา start() { // สร้างผู้เล่นใหม่ด้วย id ผู้ใช้ที่ระบุ zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // เพิ่มผู้ฟังไปยังเหตุการณ์ onaddedlocalplayer ซึ่งจะถูกเรียกเมื่อผู้เล่นท้องถิ่นถูกเพิ่ม zepetoplayers instance onaddedlocalplayer addlistener(() => { // เรียกใช้วิธี changecostume ด้วยรหัสไอเท็มที่ให้มาเพื่อเปลี่ยนชุด this changecostume(this itemcode); }); } // วิธีการเปลี่ยนชุดของผู้เล่นท้องถิ่นโดยใช้รหัสไอเท็มที่ให้มา changecostume(itemcode string) { // ใช้คุณสมบัติ localplayer เพื่อเข้าถึงอินสแตนซ์ผู้เล่นท้องถิ่นและตั้งค่าชุดของพวกเขาโดยใช้รหัสไอเท็มที่ให้มา zepetoplayers instance localplayer setcostume(itemcode, () => { // เมื่อการเปลี่ยนชุดเสร็จสิ้น ให้บันทึกข้อความที่บ่งบอกถึงการเปลี่ยนแปลงที่สำเร็จ console log(`ตั้งชุดเสร็จสิ้น ${itemcode}`); }); } } คำอธิบายสคริปต์ สคริปต์นี้เปลี่ยนชุดของผู้เล่นท้องถิ่นตามรหัสรายการที่กำหนดไว้ เมื่อฉากเริ่มต้น ให้สร้างผู้เล่นด้วยรหัสผู้ใช้ที่ระบุและใช้ createplayerwithuserid() ฟังก์ชันนี้ มีการเพิ่มตัวฟังเหตุการณ์ onaddedlocalplayer เพื่อให้เมื่อมีการเพิ่มผู้เล่นท้องถิ่น เหตุการณ์นั้นจะถูกเรียกใช้ และ changecostume() เมธอดจะถูกเรียกเพื่อเปลี่ยนชุด เข้าถึงอินสแตนซ์ผู้เล่นท้องถิ่นผ่านคุณสมบัติ localplayer และเปลี่ยนชุดโดยใช้รหัสรายการที่ให้ไว้ เมื่อการเปลี่ยนชุดเสร็จสิ้น จะมีการบันทึกข้อความ set costume complete ซึ่งจะแสดงถึงการเปลี่ยนแปลงที่สำเร็จ 📘 กรุณาอ้างอิงคู่มือหุ่นจำลองเกี่ยวกับวิธีการตรวจสอบรหัสรายการ \[ zepeto mannequin docid\ jp7d0wgm6zt9ejyi682l ] 2\) หากคุณกดปุ่ม \[▶︎(เล่น)] เพื่อรันมัน คุณจะเห็นว่าผู้เล่นท้องถิ่นถูกสร้างขึ้นและเปลี่ยนด้วยชุดเครื่องแต่งกายตามรหัสรายการที่ป้อนเข้าไป ก่อนการเปลี่ยนชุดเครื่องแต่งกาย (ซ้าย), หลังการเปลี่ยนชุดเครื่องแต่งกาย (ขวา) หากรายการเป็นผลิตภัณฑ์ที่มีระยะเวลาคงที่ จะต้องสวมใส่หลังจากตรวจสอบว่าหมดอายุหรือไม่ สำหรับรายการที่หมดอายุ จะมีบันทึกข้อผิดพลาดที่เรียกว่า รายการหมดอายุ ถูกเรียกว่า หากรายการเป็นผลิตภัณฑ์ที่จ่ายด้วย zem จะต้องสวมใส่หลังจากตรวจสอบว่าผู้เล่นท้องถิ่นเป็นเจ้าของหรือไม่ สำหรับรายการที่ไม่มีเจ้าของ จะมีบันทึกข้อผิดพลาดที่เรียกว่า ไม่มี itemcode ถูกเรียกว่า ตัวอย่างการโหลดรายการเสื้อผ้าและการเปลี่ยนชุด คุณสามารถดึงรายการเสื้อผ้าโดยใช้ getmyitemlistasync() , ซึ่งให้ข้อมูลเกี่ยวกับรายการที่ผู้ใช้เป็นเจ้าของ ตัวอย่างต่อไปนี้แสดงวิธีการแสดงชุดเครื่องแต่งกายที่ผู้เล่นท้องถิ่นเป็นเจ้าของบนหน้าจอและให้พวกเขาเลือกและเปลี่ยนชุดเครื่องแต่งกายได้ ขั้นตอนที่ 1 สร้าง ui รายการเสื้อผ้า ก่อนอื่น สร้างทรัพยากร ui รายการที่จะแสดงภาพขนาดย่อและชื่อของรายการเสื้อผ้า ทรัพยากรที่ต้องสร้างรวมถึง ขั้นตอนที่ 1 1 สร้าง item prefab หลังจากโหลดรายการเสื้อผ้าที่ผู้เล่นท้องถิ่นมี เราจะสร้างรายการรายการใน ui item prefab ทำหน้าที่เป็นแหล่งข้อมูลสำหรับแต่ละรายการที่ถูกสร้างขึ้น เมื่อสร้าง item prefab ขึ้นมา จะมีภาพขนาดย่อและชื่อรายการแสดงใน ui item prefab ประกอบด้วยองค์ประกอบดังต่อไปนี้ วัตถุ button thumbnail นี่คือวัตถุที่มีส่วนประกอบ raw image และส่วนประกอบ button ลงทะเบียนเพื่อแสดงภาพขนาดย่อของรายการ วัตถุ text name วัตถุส่วนประกอบ text ที่ชื่อรายการจะแสดงอยู่ ขั้นตอนที่ 1 2 การตั้งค่า canvas canvas คือหน้าจอ ui ที่แสดงเมื่อสร้าง item prefab ขึ้นมา แนะนำให้สร้าง scroll view ภายใน canvas นี้เพื่อให้สามารถดึงรายการขนาดใหญ่ได้ วัตถุ scroll view ภายใน canvas ถูกตั้งค่าไว้ดังนี้ วัตถุ scroll view ถูกตั้งค่าให้อนุญาตการเลื่อนแนวตั้งเท่านั้น วัตถุ content ตั้งค่าคอมโพเนนต์ต่อไปนี้ กลุ่มเลย์เอาต์แบบกริด ขนาดเซลล์ x 150, y 150 ข้อจำกัด จำนวนคอลัมน์ที่คงที่ จำนวนข้อจำกัด 5 ขั้นตอนที่ 2 สคริปต์เพื่อโหลดรายการและเปลี่ยนชุด ขั้นตอน 2 1 เขียนสคริปต์ เพิ่ม zepeto > typescript และเปลี่ยนชื่อสคริปต์เป็น myitemlist เขียนสคริปต์ตัวอย่างตามด้านล่าง myitemlist ts import { zepetoscriptbehaviour } from 'zepeto script'; import { shopservice, itemkeyword } from 'zepeto module shop'; import { zepetopropertyflag } from 'zepeto'; import { gameobject, object, recttransform, texture2d, transform, waituntil } from 'unityengine'; import { button, layoutrebuilder, rawimage, text } from 'unityengine ui'; import { spawninfo, zepetoplayers } from 'zepeto character controller'; import { worldservice } from 'zepeto world'; import { item } from 'zepeto module content'; export default class checkmyitemlist extends zepetoscriptbehaviour { public itemprefab gameobject; public itemcanvas transform; // เมื่อฉากเริ่มต้น สร้างผู้เล่นด้วย id ผู้ใช้ที่ให้มาและเริ่มดึงและแสดงรายการสินค้า start() { // สร้างผู้เล่นใหม่ด้วย id ผู้ใช้ที่ระบุ zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // เพิ่มผู้ฟังไปยังเหตุการณ์ onaddedlocalplayer ซึ่งจะถูกเรียกเมื่อผู้เล่นท้องถิ่นถูกเพิ่ม zepetoplayers instance onaddedlocalplayer addlistener(() => { // เริ่ม coroutine cogetmyitem เพื่อดึงและแสดงรายการสินค้า this startcoroutine(this cogetmyitem()); }); } // coroutine เพื่อดึงและแสดงรายการสินค้า cogetmyitem() { // ขอรายการสินค้าด้วยคีย์เวิร์ด "all" และไม่มีการกรอง var requestitemlist = shopservice getmycontentitemlistasync(itemkeyword all, null); // รอจนกว่าคำขอจะเสร็จสิ้น yield new waituntil(() => requestitemlist keepwaiting == false); if (requestitemlist responsedata issuccess) { let contentitems item\[] = requestitemlist responsedata items; console log(contentitems length); for (let i = 0; i < contentitems length; ++i) { const property zepetopropertyflag = contentitems\[i] property; // ขอ texture thumbnail สำหรับสินค้า var texturereq = contentitems\[i] getthumbnailasync(); yield new waituntil(() => texturereq keepwaiting == false); let thumbnailtexture texture2d = texturereq responsedata texture; // สร้าง prefab สินค้าและตั้งค่าคุณสมบัติ const item = object instantiate(this itemprefab, this itemcanvas) as gameobject; item getcomponentinchildren\<rawimage>() texture = thumbnailtexture; item getcomponentinchildren\<text>() text = contentitems\[i] id; // เพิ่มผู้ฟังการคลิกไปยังปุ่มสินค้าเพื่อเปลี่ยนชุดเมื่อคลิก item getcomponentinchildren\<button>() onclick addlistener(() => { this setitembutton(contentitems\[i] id); }); } } // บังคับให้สร้างเลย์เอาต์ใหม่เพื่อให้แน่ใจว่าการจัดตำแหน่งของ ui ถูกต้อง const rect = this itemcanvas gameobject getcomponent\<recttransform>(); layoutrebuilder forcerebuildlayoutimmediate(rect); } // วิธีการเปลี่ยนชุดของผู้เล่นท้องถิ่นตามรหัสสินค้าที่ให้มา setitembutton(itemcode string) { // ใช้คุณสมบัติ zepetoplayers instance localplayer เพื่อเข้าถึงอินสแตนซ์ผู้เล่นท้องถิ่นและเปลี่ยนชุดของพวกเขา zepetoplayers instance localplayer setcostume(itemcode, () => { // เมื่อการเปลี่ยนชุดเสร็จสิ้น ให้บันทึกข้อความที่บ่งบอกถึงการเปลี่ยนแปลงที่สำเร็จ console log(`set costume complete ${itemcode}`); }); } } คำอธิบายสคริปต์ ในวิธี 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() \[ ค้นหาข้อมูลเกี่ยวกับสิ่งของที่ผู้ใช้เป็นเจ้าของ docid\ r6nb tpwss3jtcecam1c7 ] เมื่อค้นหารายการที่ผู้ใช้เป็นเจ้าของ คุณสามารถค้นหาตามหมวดหมู่โดยใช้ itemkeyword และแสดงในรายการบน ui ❗️ ระวัง รายการเสื้อผ้าที่ดึงมาผ่าน shopservice getmycontentitemlistasync() มีผลิตภัณฑ์ที่หมดอายุและมีเวลาจำกัด ดังนั้น รายการที่หมดอายุ สามารถเรียกดูบันทึกข้อผิดพลาดได้ ขั้นตอน 2 2 การตั้งค่าตรวจสอบ myitemlist ลงทะเบียน itemprefab ที่สร้างขึ้นในขั้นตอนที่ 1 ใน item prefab ของคอมโพเนนต์ที่ myitemlist ถูกนำไปใช้ และลงทะเบียน canvas ใน itemcanvas ขั้นตอนที่ 3 รัน หากคุณกดปุ่มเล่นเพื่อรัน มุมมอง ui ของแคนวาสจะแสดงรายการของที่เป็นเจ้าของโดยผู้เล่นท้องถิ่น และคุณจะเห็นว่าของเปลี่ยนเป็นชุดที่ตรงกันเมื่อเลือก ❗️ ระวัง api การสวมชุดนี้ใช้ได้เฉพาะกับผู้เล่นท้องถิ่นและไม่รองรับการซิงโครไนซ์แบบผู้เล่นหลายคนในขณะนี้ การซิงโครไนซ์ชุดแบบผู้เล่นหลายคนจะมีให้ในอนาคต