Unity 3D 中的计数器不会递减
Counter is not decremented in Unity 3D
基本上这个游戏是一款破砖游戏,我将在其中快速介绍一下它的基本背景。游戏会在随机位置生成 10 个砖块,如果所有砖块都碰到了砖块
一次,砖被摧毁。如果所有 10 块砖都被摧毁,那么用户将被带到另一个场景 (gamewon)。
我的主要问题是当我摧毁所有的砖块时,我没有被重定向到现场。但是,如果我将 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++;
}
}
发生这种情况是因为您似乎已将上面的脚本附加到每块砖上。
所以真正发生的是当你的任何一块砖被击中时,numberOfBricks 减少 1,导致值变为 9。每块砖都会发生这种情况。
相反,您需要做的是将此 numberOfBricks 计数器保存在另一个脚本中。在代码的 OnCollisionEnter 部分,您应该将另一个脚本中的 numberOfBricks 变量减 1。
这样做,您会看到预期的结果。
基本上这个游戏是一款破砖游戏,我将在其中快速介绍一下它的基本背景。游戏会在随机位置生成 10 个砖块,如果所有砖块都碰到了砖块 一次,砖被摧毁。如果所有 10 块砖都被摧毁,那么用户将被带到另一个场景 (gamewon)。
我的主要问题是当我摧毁所有的砖块时,我没有被重定向到现场。但是,如果我将 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++;
}
}
发生这种情况是因为您似乎已将上面的脚本附加到每块砖上。
所以真正发生的是当你的任何一块砖被击中时,numberOfBricks 减少 1,导致值变为 9。每块砖都会发生这种情况。
相反,您需要做的是将此 numberOfBricks 计数器保存在另一个脚本中。在代码的 OnCollisionEnter 部分,您应该将另一个脚本中的 numberOfBricks 变量减 1。
这样做,您会看到预期的结果。