在Unity3D C中显示和计算杀死的敌人#

时间:2017-03-06 16:43:01

标签: c# unity3d

我是Unity3D的新手,我正在尝试计算我在运行时杀死的所有敌人并在 <div class="div1"> <div class="div2"> Test123 <br/> Test123 <br/> Test123 <br/> </div> </div>中显示。我所做的是,每次敌人被杀,我都会增加:OnGUI()。然而,当它确实...在程序中的某个时间......显示器减少然后消失。

enemyKilled

我已经可以在运行时杀死敌人了。我似乎无法显示正确的敌人数量。我该如何解决这个错误?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

此脚本适用于每个敌人,因此您将获得每个敌人不同的分数,并尝试将其输出到GUI。

最重要的是你实际上在StartSinking函数中销毁了对象,但是它负责显示GUI,以便在被破坏后停止。

负责保持分数的脚本应该是某种形式的GameManager类,它不会被破坏或者会丢失计数。也应该只有一个,所以它保持准确的分数。

例如,您有一个名为GameManager的类,它附加到场景中的游戏对象。它不管是什么样的游戏对象都可能是空的。这是应该保持分数并将其显示在屏幕上的类。

敌人脚本应该只负责并控制敌人的行为,以便取出GUI调用。当敌人死亡时,你会调用GameManager类并告诉它另一个敌人已经死亡并且可以更新其分数。

public class GameManager : MonoBehaviour{

private int enemyKilled= 0;

  public void UpdateScore()
  {
     enemyKilled++;
  }

   public void OnGUI()
   {
     GUI.contentColor = Color.yellow;
     GUI.Box(new Rect(5, 5, 20, 20), "Enemies killed: " + enemyKilled );
   }
}

上面是一个示例管理器,用于在每次调用UpdateScore方法时增加分数。然后它有一个OnGui函数来显示分数。

所有敌人的需求都是对GameManager脚本的引用,因此您可以调用该方法。这很容易,并且有一些方法可以做到这一点。制作一个GameManager类型的变量并搜索场景,或者更好地查看创建一个可以随时访问的静态GameManager(单例方法)。

希望有所帮助。