我正在使用统一网络5.3.1,我的播放器prefab是一个UI画布,所以当另一个客户端加入画布的重叠,我不能按主机或客户端上的任何按钮。
我想要的是在每个玩家游戏中禁用其他画布并且让本地玩家画布激活,我尝试过islocalplayer,isclient,isserver但是没有任何作用。
有没有办法解决这个问题请告诉你。
答案 0 :(得分:2)
以下是我能想到的一些选择:
1)不要将画布作为玩家对象,而是将面板设为玩家对象,以便所有玩家在同一画布下都是不同的面板。现在,当对象位于同一画布下时,它们的光线投射顺序由层次结构中的顺序决定。
层次结构中 lower 的对象会遮挡较高的对象。因此,您可以做的是将玩家对象移动到对象层次结构中的最低位置,这样它就会遮挡所有其他玩家。这可以使用转换方法SetSiblingIndex和GetSiblingIndex来完成,例如
transform.SetSiblingIndex(100000/*some big number*/);
2)禁用所有其他播放器上的光线投射 - 如果你可以在画布上点击某个组件,那么它是否是一个光线投射目标。图像和文本组件可以是光线投射目标,或者更一般地是从Graphics继承的任何组件。您可以在除本地播放器之外的所有播放器中迭代所有类型的图形组件并标记raycastTarget = false
。
答案 1 :(得分:1)
我想出来了,因为@NikaKasradze说只使用一个画布并将所有gui听众放入islocalplayer布尔检查中。