我是Unity3D的新手,我正在尝试计算我在运行时杀死的所有敌人并在
<div class="div1">
<div class="div2">
Test123 <br/>
Test123 <br/>
Test123 <br/>
</div>
</div>
中显示。我所做的是,每次敌人被杀,我都会增加:OnGUI()
。然而,当它确实...在程序中的某个时间......显示器减少然后消失。
enemyKilled
我已经可以在运行时杀死敌人了。我似乎无法显示正确的敌人数量。我该如何解决这个错误?非常感谢你的帮助。
答案 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(单例方法)。
希望有所帮助。