时间同步

对于许多算法,您需要在客户端和服务器之间同步时钟。Mirror会自动为您完成这一操作。

要获取当前时间,请使用以下代码:

double now = NetworkTime.time;

它将在客户端和服务器中返回相同的值。当服务器启动时,时间从0开始。请注意,时间是一个double类型,不应该转换为float类型。将其转换为float类型会导致时钟在一段时间后失去精度:

  • 经过1天后,准确性降至8毫秒

  • 经过10天后,准确性为62毫秒

  • 经过30天后,准确性为250毫秒

  • 经过60天后,准确性为500毫秒

Mirror还会计算应用程序所见的RTT(往返时间):

double rtt = NetworkTime.rtt;

您可以测量准确性。

double time_standard_deviation = NetworkTime.timeSd;

例如,如果返回值为0.2,则表示时间测量大约上下波动0.2秒。

网络抖动通过使用EMA平滑值来进行补偿。 您可以配置希望发送ping的频率:

NetworkTime.PingFrequency = 2;

您还可以配置在计算中使用多少个ping结果:

NetworkTime.PingWindowSize = 10;

最后更新于

这有帮助吗?