Unity PhotonView 是我的检查

Posted

技术标签:

【中文标题】Unity PhotonView 是我的检查【英文标题】:Unity PhotonView is mine check 【发布时间】:2019-06-19 12:26:18 【问题描述】:

我正在我的游戏中实现 Photon 多人游戏,但我对检查本地玩家的方法感到担忧。

目前,我使用 PhotonView.IsMine() 在各个位置检查本地播放器。

我是否正确地说脚本仍在为所有客户端运行但只有本地播放器运行他们的脚本实例?例如,我的移动脚本附加到所有客户端,但我在应用移动之前检查 PhotonView.IsMine() 以防止客户端相互控制。

有人知道您在项目中使用的任何更好的实践或技术吗?我认为我的方法不是很好,可以提高效率并更容易设置。

【问题讨论】:

【参考方案1】:

如果实例是您的,您可以检查 Start 方法并简单地删除组件(使用 Destroy 方法)。如果您需要此脚本中的某些函数在您的所有客户端中运行,请在您不会删除的另一个脚本中使用它们。

【讨论】:

这太棒了,它的工作方式正是我想要的。如果您不介意我对这个解决方案有几个问题:移除组件的限制是什么?删除光子视图以外的所有内容可以吗?这是如何工作的?因为 awake 只在新客户上调用,而不是已经存在的客户。 如果你只需要同步的游戏对象,photonview 和 photon transform view 就可以了。而已。 Awake 将在新客户端上调用,但由于脚本已经在游戏对象中,所有客户端都会调用它,检查它是否是所有者并在必要时删除。如果它们不是你的,我建议你也删除像刚体这样的组件。让物理只在本地运行。 继承MonoBehaviourPunCallbacks 并改用override public void OnEnable()。不要忘记致电base.OnEnable();

以上是关于Unity PhotonView 是我的检查的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D如何检查与标记为“标签”的对象的碰撞

我的 Prefab 上的 Canvas Environment 在 Unity 检查器中显示为灰色,我做了啥?

如何在 Unity3d 检查器中显示锯齿状数组?

使用 PUN 同步运行时导入的对象

多人 Unity 游戏单独运行

unity中的俩个模型咋能让他自动连接上(自动连接的模型是我的一个模型)