【发布时间】:2019-04-16 13:40:29
【问题描述】:
在有目的的 LAN 设置中,我希望 Unity 的 NetworkTransform 简单地发送每一帧。 (模式是“同步变换”,不是刚体等)
我想知道如何做到这一点.. 如果您只是将发送速率设置为 0.00001,它实际上会在对象移动的每一帧中执行吗?
(Inspector 界面只允许最高 29Hz,如果您想要更小的值,只需在代码中设置即可。)
我也在考虑类似剧本的事情......
void Update() { .. SetDirtyBit( ? ); }
这样可以吗?
(还有,你在那里使用什么作为位掩码?)
通过实验确定这类事情确实需要很长时间。显然 Unity 的 doco 是个笑话。而且我无法用谷歌搜索任何已经想到它的人。有这方面的经验吗?
其次...
更多信息。我们做了一些实验,实际上,如果您将其设置为一个非常小的值,它确实似乎会在每一帧同步NetworkTransform。
(当然,如果它没有移动,它不会打扰发送,正如@Programmer 在下面指出的那样。)
H O W E V E R这不会为运动物体或相机位置产生平滑的结果。我不知道为什么;它与更新循环以及更改发生的确切时间有关。但是你得到的是“非常精细的抖动”。
第三...
我做了一个实验,只使用命令和 Rpcs,每帧发送一些信息(实际上是从一个客户端到另一个客户端)。
我专门使用了一个单独的以太网网络,应用程序除了每帧发送信息(即“手动”仅使用 Command/Rpc)(即在 Update() 上)之外几乎什么都不做。
事实上,它仍然丢了很多帧,通常没有发送出去。 (假设它在 10 秒内错过了 10 或 20 个。)
祝你好运!
如果您需要“每帧”发送一些信息,例如在 LAN 系统上,请不要这样做。
【问题讨论】:
-
Afaik NetworkTransform 如果使用 RigidBody 也会尝试在一定限度内预测运动。也许这会导致抖动?对我来说,NetworkTransform 从来没有很好地工作,我最终编写了一个带有命令、Rpcs 和位置插值的自定义。 forum.unity.com/threads/network-transform-lags.334718
-
(对,我没有使用 RigidBody。是的,他们的系统很垃圾;这更像是一个好奇心调查 :))
-
是的,这就是为什么they start over
-
啊我不知道that@derHugo。我是第一次听你说的! Geesh ... Unity 在网络方面的又一次尝试:/
-
是的,我们都希望它会变得更好.. 到目前为止,我们最终使用非常低级的套接字连接编写了我们自己的完整网络(毕竟
c#仍然是c;))
标签: unity3d unity3d-unet