创造你的世界
多人游戏

多人游戏房间状态

7min
multiplay room 提供一个状态属性,用于管理连接的玩家或对象位置。 状态的数据定义可以从模式文件中管理,该文件位于多玩家包下。 当客户端成功建立与房间的连接时,首先调用 onstatechange 事件,之后每当状态数据发生变化时都会调用该事件。 服务器 api api 描述 state schema name 您可以通过状态访问在模式文件中定义的 schema name 字段。 您可以在客户端请求或内部服务器逻辑的请求中修改字段值。 更改的状态会通过 onstatechange 事件自动传播到客户端。 📘 请参考以下指南。 \[ zepeto multiplay(服务器) api https //developer zepeto me/docs/multiplay server/classes/zepeto multiplay sandbox#state ] import { location } from 'zepeto multiplay schema'; export default class extends sandbox { const location location = this state playerlocation; // 处理状态。 } api 描述 room onstatechange(state, isfirst) 您可以在加入房间时注册状态更改回调。 您可以第一次接收整个房间的状态,之后只会接收更改的状态。 客户端 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; // 使用更新的状态处理玩家位置。 } } 定义模式文件 模式是定义房间当前状态的数据结构。房间主要用于管理玩家信息、玩家或物体位置等。 要编辑架构,您可以选择项目视图 → multiplaypackage 资产 → schema json,然后在检查器窗口中修改用于世界的数据类型。 您可以在检查器窗口中修改用于世界的数据类型。 步骤 1 定义架构类型 架构类型是用于世界的数据结构。在检查器 → 架构类型中,按下 \[+] 按钮并添加数据。 步骤 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"} }