ClientSim

ClientSim,即客户端模拟器,是 Worlds SDK 的一部分,可在 Unity 编辑器中模拟 VRChat 客户端行为,用于加速开发。
功能
- 在 Unity 中测试您的世界,无需打开 VRChat。
- 使用鼠标键盘或游戏手柄控制玩家。
- 在播放模式下检查 Udon 变量。
- 抓取拾取物、使用交互、UI 和站点。
- 进入播放模式时删除 EditorOnly 对象。
在公开发布之前,务必在 VRChat 中测试您的世界!ClientSim 无法模拟 VRChat 的所有功能。
窗口
ClientSim 添加了几个 Unity 编辑器窗口来帮助你调试和测试世界:
- ClientSim 设置允许你更改本地玩家的名称和玩家高度、禁用 ClientSim 等。
- 在播放模式下,按"Escape"键打开游戏内设置窗口。
- ClientSim PlayerData 窗口允许你调试 PlayerData。
- ClientSim PlayerObject 窗口允许你调试 PlayerObjects。
入门
- 打开你的 VRChat 世界场景。
- 在 Unity 中按播放。
- 在 Unity 的"Game"窗口中测试你的世界。
在系统部分了解更多关于所有系统如何工作的信息。
ClientSim 中的网络差异
ClientSim 仅模拟本地 VRChat 玩家,而非远程玩家。反序列化事件为本地玩家模拟,但不会为生成的远程玩家模拟。
VRChat 服务器的某些部分被模拟。例如,当你在远程玩家处生成时,本地玩家会收到 OnPlayerRestored 事件。
ClientSim 对 VRChat 的网络序列化器有不同的实现。因此,存储和序列化在事件属性中的数据量存在差异。像 OnPostSerialization 和 OnDeserialization 这样的事件中的数据在 ClientSim 和 VRChat 之间有所不同(见下文)。
OnPostSerialization(SerializationResult)
ClientSim 仅在此事件属于同步玩家对象的一部分时才执行此事件。
| 在 ClientSim 中 | 在 VRChat 中 | ||
|---|---|---|---|
| SerializationResult.success | 始终为 true | 序列化成功则为 true | |
| SerializationResult.byteCount | 对象上序列化的属性数量 | 发送的字节数 |
OnDeserialization(DeserializationResult)
ClientSim 仅在此事件属于同步 Player Object 的一部分时才执行此事件。
| 在 ClientSim 中 | 在 VRChat 中 | |
|---|---|---|
| DeserializationResult.sendTime | 始终为 0 | 此消息发送的时间(秒)。 |
| DeserializationResult.receiveTime | 始终为 0 | 此消息接收的时间(秒) |
| DeserializationResult.isFromStorage | 正常工作 | 如果从持久化存储发送则为 true |