Skip to main content

ClientSim

ClientSim 截图。场景视图显示本地玩家和远程玩家。游戏视图显示 ClientSim 的"暂停"菜单,包含重生玩家、生成远程玩家、关闭菜单等各种选项按钮。ClientSim 设置窗口和 PlayerData 窗口也可见。

ClientSim,即客户端模拟器,是 Worlds SDK 的一部分,可在 Unity 编辑器中模拟 VRChat 客户端行为,用于加速开发。

功能​

  • 在 Unity 中测试您的世界,无需打开 VRChat。
  • 使用鼠标键盘或游戏手柄控制玩家。
  • 在播放模式下检查 Udon 变量。
  • 抓取拾取物、使用交互、UI 和站点。
  • 进入播放模式时删除 EditorOnly 对象。

在公开发布之前,务必在 VRChat 中测试您的世界!ClientSim 无法模拟 VRChat 的所有功能。

窗口​

ClientSim 添加了几个 Unity 编辑器窗口来帮助你调试和测试世界:

  • ClientSim 设置允许你更改本地玩家的名称和玩家高度、禁用 ClientSim 等。
  • 在播放模式下,按"Escape"键打开游戏内设置窗口。
  • ClientSim PlayerData 窗口允许你调试 PlayerData。
  • ClientSim PlayerObject 窗口允许你调试 PlayerObjects。

入门​

  1. 打开你的 VRChat 世界场景。
  2. 在 Unity 中按播放。
  3. 在 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