我想在Unity制作突围游戏。我做了很多功能,除了" count"功能。我希望" count"函数告诉用户剩下多少砖。每当一个brick(gameObject)被破坏时,int变量" brick"将减少一个。我遇到的问题是它只更新一次(从104到103)然后停止更新。这是我的剧本:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Spawner : MonoBehaviour {
public int bricks = 104;
public Text triggerText;
void Start(){
triggerText.text = "Bricks: "+bricks;
}
public void OnCollisionEnter(){
DestroyBrick ();
}
public void DestroyBrick(){
bricks--;
Destroy (gameObject);
triggerText.text = "Bricks: "+bricks;
}
编辑:我忘了提到我将这个脚本添加到我的Brick gameObjects(其中104个)中,以便它们在碰撞时中断。
答案 0 :(得分:3)
我认为你的场景中有一个spawner实例。调用DestroyBrick
时,您可以通过调用Destroy (gameObject);
来终止此实例。所以你坚持 103 。
可能的解决方案:
bricks
static 编辑(灵感来自@ BradleyDotNET的评论):
静态成员可以进行测试。但我总是更喜欢创建一个单独的类来负责保存砖计数。
答案 1 :(得分:1)
由于砖游戏对象的每个实例都有此行为的唯一实例,所以你得到了这个:
给出计数仅减少一次的外观。要解决此问题,您需要一个管理计数的全局脚本(分配给单个gameObject)。当一个砖被销毁时,它的行为应该找到(或被传递)这个行为实例并在其上调用一个方法:
public void BrickDestroyed()
{
bricks--;
triggerText.text = "Bricks: "+bricks;
}
答案 2 :(得分:1)
如果这个代码块出现在你的104个游戏对象中,那么每次发生这种情况时,都会有一个名为“砖块”的整数。使用值104创建。
将此变量声明在所有这些对象之外可公开访问的位置,并且只减少和更新brick对象上的文本。