PUN 2 Unity多人FPS UI同步

问题描述

我正在用Photon PUN 2制作多人FPS游戏,并且一直在关注此tutorial series by Rugbug Redfern。尽管我不完全了解PUN 2的内部工作原理,但我仍处于开始实施枪械机制和UI(弹药,健康状况等)的阶段,并且具有多人游戏功能

我的问题是我试图在玩家屏幕上显示一个弹药计数器,以显示他们还剩多少弹药,并且当一个玩家加入游戏时,似乎有多个弹药计数器( (请参见下面图片的左下角),原始播放器之一和新加入的播放器之一(尽管由于未通过网络同步而不会更新)。这显然不好,我也不知道该怎么办。我有一个玩家预制件,当新玩家加入游戏时会实例化,该预制件中还包含UI画布和弹药计数器。因此,当播放器的两个实例位于同一场景中时,将有2个画布,因此有2个弹药文本。我将如何确保只有一名球员,即一名球员?单身人士实施工作可行吗?我对此很陌生,非常感谢您的帮助!

ammo counter being whacky

解决方法

A。如果UI弹药计数器Canvas是播放器预制件的一部分,只需停用其根GameObject,将其删除或禁用Canvas或将其隐藏以供远程播放器使用。或相反,仅向本地播放器显示它:默认情况下,它处于禁用/禁用/隐藏状态,然后处于活动/启用/取消隐藏状态。

B。如果您将UI弹药计数器分成单独的预制件,甚至使其成为场景的一部分,并在加入时启用/取消隐藏它即可。

仅不要为远程播放器实例化UI ammo计数器预制。 您可能是在OnPlayerEnteredRoom回调中执行此操作,或者在OnJoinedRoom回调中为所有以前加入的播放器执行此操作。

对于本地播放器,只需在OnJoinedRoom回调中执行一次即可。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...