Warm tip: This article is reproduced from serverfault.com, please click

c#-使用PUN同步图形

(c# - Synchronising drawing using PUN)

发布于 2019-06-12 10:45:56

我已经实现了注释功能,类似于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);
   }
}

如何使两个系统上的图形更相似?我已经看到了人们能够完美同步这些案例的情况。检查一下他们在做什么?

Questioner
Harsh Priyadarshi
Viewed
0
2020-08-07 05:03:30

是的,PhotonTransformView不适合此功能。

你可以每隔x毫秒发送一次可靠的rpc,其中包含自上次rpc以来的点列表。那是实时绘制图形的时间,当图形完成时,你将给定图形ID的整个图形定义缓存在数据库中。然后,玩家可以在绘制完图纸后加入房间,甚至从图纸列表中加载图纸,也可以通过任意逻辑将其取回。

总而言之,你需要两种不同的系统,一种是在实时绘图时使用,另一种是在绘图完成时使用。