สถานะห้องเล่นหลายคน

ห้องมัลติเพลย์ให้คุณสมบัติ State สำหรับการจัดการตำแหน่งของผู้เล่นหรือวัตถุที่เชื่อมต่ออยู่
การกำหนดข้อมูลของ State จะถูกจัดการจากไฟล์ Schema ซึ่งอยู่ภายใต้แพ็คเกจมัลติเพลย์ เหตุการณ์ onStateChange จะถูกเรียกครั้งแรกเมื่อไคลเอนต์เชื่อมต่อกับห้องได้สำเร็จ และจะถูกเรียกอีกครั้งเมื่อมีการเปลี่ยนแปลงข้อมูลสถานะ
API เซิร์ฟเวอร์
API | คำอธิบาย |
|---|---|
state.SCHEMA_NAME | คุณสามารถเข้าถึงฟิลด์ SCHEMA_NAME ที่กำหนดในไฟล์ schema ด้วย state คุณสามารถแก้ไขค่าฟิลด์ตามคำขอจากไคลเอนต์หรือจากตรรกะเซิร์ฟเวอร์ภายใน สถานะที่เปลี่ยนแปลงจะถูกส่งต่อไปยังไคลเอนต์โดยอัตโนมัติด้วยเหตุการณ์ OnStateChange |
📘 กรุณาอ้างอิงจากคู่มือต่อไปนี้ [ZEPETO.Multiplay(Server) API]
import { Location } from 'ZEPETO.Multiplay.Schema';
export default class extends Sandbox {
...
const location: Location = this.state.playerLocation;
// การจัดการสถานะ.
...
}API | คำอธิบาย |
|---|---|
room.OnStateChange(State, isFirst) | คุณสามารถลงทะเบียน callback การเปลี่ยนแปลงสถานะเมื่อคุณเข้าร่วมห้อง คุณสามารถรับสถานะของห้องทั้งหมดเป็นครั้งแรก และจะได้รับเฉพาะสถานะที่เปลี่ยนแปลงเท่านั้นในภายหลัง. |
Client API
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { Location } from 'ZEPETO.Multiplay.Schema';
export default class SampleClient extends ZepetoScriptBehaviour {
Start() {
this.multiplay.RoomJoined += (room: Room) => {
room.OnStateChange += this.OnStateChange;
};
}
private OnStateChange(state: State, isFirst: boolean) {
const location: Location = state.playerLocation;
// Handling player location using updated State.
}
}
กำหนดไฟล์ Schema
Schema เป็นโครงสร้างข้อมูลสำหรับการกำหนดสถานะปัจจุบันในห้อง ห้องถูกใช้เพื่อจัดการข้อมูลผู้เล่น ตำแหน่งของผู้เล่นหรือวัตถุ เป็นต้น
ในการแก้ไขสคีมา คุณสามารถเลือก Project View → MultiplayPackage Asset → schema.json และจากนั้นปรับเปลี่ยนประเภทข้อมูลที่ใช้สำหรับโลกในหน้าต่าง Inspector คุณสามารถปรับเปลี่ยนประเภทข้อมูลที่ใช้สำหรับโลกในหน้าต่าง Inspector ได้
ขั้นตอนที่ 1 : การกำหนดประเภทสคีมา
ประเภทสคีมาเป็นโครงสร้างข้อมูลที่ใช้ในโลก ใน Inspector → ประเภทสคีมา กดปุ่ม [+] และเพิ่มข้อมูล

ขั้นตอนที่ 2 : เพิ่มสถานะห้อง
สถานะห้องคือคุณสมบัติที่แสดงสถานะปัจจุบันของห้องโลก และแสดงในโครงสร้างสคีมาตามที่กำหนดไว้ข้างต้น
ในประเภทสคีมา ให้เลือกประเภทสถานะห้องที่ใช้เป็นสถานะปัจจุบันของโลกและตั้งชื่อเป็น SCHEMA_NAME

ตัวอย่าง schemas.json
{
"State" : {"players" : {"map" : "Player"}},
"Player" : {"sessionId" : "string","zepetoUserId" : "string","transform" : "Transform","state" : "number","subState" : "number"},
"Transform" : {"position" : "Vector3","rotation" : "Vector3"},
"Vector3" : {"x" : "number","y" : "number","z" : "number"}
}