我已经实现了注释功能,类似于VR中的绘制。绘图是一个Unity路径,其形状取决于其轨迹。这就是真正的问题所在。我们正在实时同步图形,使用PhotonTransformView
该图形可以同步足迹的世界位置。但是这是输出。同步图看起来与原始图有很大不同。
这是同步配置代码:
public void SetupSync(int viewId, int controllingPlayer)
{
if (PhotonNetwork.inRoom)
{
photonView = gameObject.AddComponent<PhotonView>();
photonView.ownershipTransfer = OwnershipOption.Takeover;
photonView.synchronization = ViewSynchronization.ReliableDeltaCompressed;
photonView.viewID = viewId;
photonTransformView = gameObject.AddComponent<PhotonTransformView>();
photonTransformView.m_PositionModel.SynchronizeEnabled = true;
photonView.ObservedComponents = new List<Component>();
photonView.ObservedComponents.Add(photonTransformView);
photonView.TransferOwnership(controllingPlayer);
}
}
如何使两个系统上的图形更相似?我已经看到了人们能够完美同步这些案例的情况。检查一下。他们在做什么?
是的,PhotonTransformView不适合此功能。
你可以每隔x毫秒发送一次可靠的rpc,其中包含自上次rpc以来的点列表。那是实时绘制图形的时间,当图形完成时,你将给定图形ID的整个图形定义缓存在数据库中。然后,玩家可以在绘制完图纸后加入房间,甚至从图纸列表中加载图纸,也可以通过任意逻辑将其取回。
总而言之,你需要两种不同的系统,一种是在实时绘图时使用,另一种是在绘图完成时使用。
谢谢让。点数组的长度应该合适?500应该很好,还是应该引起带宽问题?
另外,rpc汇率应该是多少?每50ms应该做一次吗?
@HarshPriyadarshi我们可以在光子论坛上继续进行此对话吗,StackOverflow不适合长期进行设计讨论。500似乎是合理的,但是您也可以缓冲并成束发送。