Unity 3D中的计数器不会减少

时间:2015-01-09 01:57:43

标签: unity3d

基本上这个游戏是一个破砖者,我将在其中给出一个快速的基本背景。游戏将在随机位置产生10块砖,如果全部击中砖块 一次,砖被摧毁。如果所有10块砖被破坏,那么用户将被带到另一个场景(游戏)。

我的主要问题是当我摧毁所有砖块时,我没有被重定向到现场。但是,如果我将numberOfBricks设置为1,它将起作用..我无法理解发生了什么。

非常感谢! -HurpaDurpa

using UnityEngine;
using System.Collections;

public class BrickScript : MonoBehaviour {
    public int position_x = 0;
    public int position_y = 0;

    public GameObject Brick;
    public int brickDamage = 0;
    public int numberOfBricks = 10;

    // Use this for initialization
    void Start () {

        Brick = GameObject.Find ("Brick");
        position_x = Random.Range (-6, 6);
        position_y = Random.Range(-1, 4);

        transform.position = new Vector3 (position_x, position_y, transform.position.z);
    }

    // Update is called once per frame
    void Update () {
        if (brickDamage == 1) { //destroy brick on 1 hit

            numberOfBricks--;
            Object.Destroy (gameObject); //so it will destroy the hit object
                }

        if (numberOfBricks == 0) {
                        Application.LoadLevel (1);
                        numberOfBricks = 10;//Variable resetted
                }

    }

    void OnCollisionEnter(Collision collision)
    {
        brickDamage++;
    }

}

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您似乎已将上面的脚本附加到每个砖块上。

所以真正发生的事情是,当你的任何一块砖被击中时, numberOfBricks 减少1,结果值为9.这将发生在每块砖上。

相反,您需要做的是将此 numberOfBricks 计数器保留在另一个脚本中。在代码的OnCollisionEnter部分,您应该将其他脚本中的 numberOfBricks 变量减少1.

这样做,你会看到你期望的结果。