---
title: Multiplay Room
slug: world-sdk-guide-ch/multiplay-room
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

## 房间连接过程

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-9_rdZyDRLkm1_dgfSR1fh-20240904-102419.png)

:::hint{type="success"}
👍 **房间连接过程**

1. 请求客户端连接
2. ZEPETO 多人游戏服务器生成客户端会话并连接到房间
3. 如果房间成功连接
   - 分享连接到客户端的房间 ID 和会话 ID
4. 如果客户端无法访问房间
   - 生成一个新房间并连接
:::



## 服务器 API

服务器代码应在 World.multiplay 包中实现 → index.ts 文件。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-dplxIaxdzMxhJzX_l0cAg-20240904-102419.png)



服务器提供以下房间生命周期事件：

| **房间生命周期事件**                                        | **描述**                                                                 |
| --------------------------------------------------- | ---------------------------------------------------------------------- |
| onCreate(options: SandboxOptions)                   | 当房间创建时调用。可以在此添加房间初始化逻辑。                                                |
| onJoin(client: SandboxPlayer)                       | 当客户端加入房间时调用。<br />参数 client (SandboxPlayer) 包含客户端的 sessionId 标识符。      |
| onLeave(client: SandboxPlayer, consented?: boolean) | 当客户端离开房间时调用。<br />参数 consented 为 true 时表示断开连接是由客户端请求的。                 |
| onTick(deltaTime: number)                           | 在服务器端的步骤间隔事件调用，间隔时间可以在 SandboxOptions 中设置。<br />(tickInterval : 100ms) |

:::hint{type="danger"}
- 当您在移动测试状态下按下 'Home button > Leave' 时，`OnLeave()` 事件发生。
  - 在 Unity 编辑器中，`OnLeave()` 事件不会发生。
:::



如果您对 ZEPETO.Multiplay 服务器 API 感兴趣，请参考文档：

:::hint{type="info"}
**📘&#x20;**&#x8BF7;参考以下指南。 \[[ZEPETO.Multiplay(服务器) API](https://developer.zepeto.me/docs/multiplay-server/)]
:::



## 客户端 API

ZepetoWorldMultiplay 组件提供了一个接口，供客户端订阅来自 ZEPETO Multiplay 服务器的世界游戏会话（房间）事件。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-xYDw9NldehRFhDN7rCOqA-20240904-102419.png)

可用事件列表：

| **房间事件监听器**          | **描述**                            |
| -------------------- | --------------------------------- |
| 房间创建（Room）           | 当房间被创建并可访问时调用。提供一个房间参数。           |
| 房间加入（Room）           | 当房间连接时调用。提供一个房间参数。                |
| 房间离开（RoomLeaveEvent） | 当从房间断开时调用。<br />提供一个房间离开事件参数。     |
| 房间重新连接（Room）         | 当相应的房间重新连接时调用。提供一个房间参数。           |
| 房间错误（RoomErrorEvent） | 当相应的房间发生错误时调用。<br />提供一个房间错误事件参数。 |
| 房间弱连接                | 当连接不稳定时调用。                        |

