如何计算来自非玩家对象的所有玩家的分数

How to count score on all players from non player object

我一直在尝试使用 unity 5.4 和 c# 制作火箭联赛类型的游戏。

我已经掌握了球员工作和游乐区的一切。玩家由网络生成器生成,球由球生成器生成,就像教程中的敌人生成器一样。我有两个目标,球可以碰撞并重置球的位置。但是我如何告诉球员已经进球了呢?我一直在到处寻找,找不到一个很好的例子来说明如何将信息从球传递给球员。我有一个文本 UI 显示在所有球员的相机上,它使用 2 个变量来计算得分,所以我想要的是在球与球门碰撞时以某种方式增加这些变量。

据我所知,RPC 调用仅在玩家对象之间起作用,如果我尝试将它们放在球和玩家之间,syncvars 似乎不起作用,任何人有任何提示或可以告诉我我错过了什么?

编辑:对于有同样问题的人。我通过创建一个 scoreManager 对象并将分数作为 syncvars 解决了这个问题,然后我得到了 scoremanager 组件及其脚本并增加了球的分数,然后也为球员获取它并获得分数。

假设您使用的是 UNet。这是来自健康同步教程:

   [SyncVar(hook = "OnChangeHealth")]  
   public int currentHealth = maxHealth;

   void OnChangeHealth(int cH)
   {
        healthBar.value = (float)cH / maxHealth;
   }

其中 healthBar 是滑块。

这里有关于[ClientRPC][Command]的解释 http://docs.unity3d.com/Manual/UNetActions.html

对于有同样问题的人。我通过创建一个 scoreManager 对象并将分数作为 syncvars 解决了这个问题,然后我得到了 scoremanager 组件及其脚本并增加了球的分数,然后也为球员获取它并获得分数。