用布尔值销毁预制件

时间:2019-06-08 18:05:35

标签: visual-studio unity3d boolean

我想销毁一个预制件,但不能。在游戏中,有一种张口,黑色方块是玩家必须在其中插入正确牙齿的空间。张口中有14个空格,每个空格代表1分。因此,如果玩家将正确的牙齿放在正确的位置,他会得到1分。然后,当他放下所需的所有牙齿时,必须转到该红色按钮并按退格键。如果一切正确,则会激活一条祝贺消息,并破坏预制件,并在游戏中生成另一种情况。

但是,如果他在错误的位置放错了牙齿,则DenteCerto是错误的,并且如果玩家转到红色按钮并按退格键,我也想破坏预制件,但是这次他什么也没得分点,然后在游戏中生成另一种情况。

第一种情况运行良好。第二个是'。这行代码有效:

{
    public ValidadorEspaço1[] espaços;

    private GameController gameController;
    private GameObject controller;




    // Start is called before the first frame update
    void Start()
    {
        controller = GameObject.FindGameObjectWithTag("Controller");
        gameController = controller.GetComponent<GameController>();


    }

    // Update is called once per frame
    public void Contar_Espaços()
    {


        gameController.contadorPontos = 0;
        for (int i = 0; i <= 13; i++)
        {
            if (espaços[i].DenteCerto)
            {
                gameController.contadorPontos++;

            }

        }

        if (gameController.contadorPontos == 14)
        {
            gameController.CasosResolvidos++;
            Destroy(this.gameObject);
        }



    }
}

但是如果DenteCerto为假,我也想破坏预制件,但这是行不通的。即使gameController.contadorPontos = 0,它也会破坏预制件:

for (int i = 0; i <= 13; i++)
         {
             if (espaços[i].DenteCerto)
             {
                 gameController.contadorPontos++;

             }

             if (espaços[i].DenteCerto == false)
             {
                 Destroy(this.gameObject);
             }

         }

我在此脚本中将DenteCerto设置为false:

public class ValidadorEspaço1 : MonoBehaviour
{

    private Transform ColliderTrans;
    private PlayerController Player;


    public bool ItemEmCima = false;
    private GameObject EmCima;

    // Start is called before the first frame update
    void Start()
    {
        ColliderTrans = GameObject.FindWithTag("PlayerCollider").GetComponent<Transform>();
        Player = GameObject.FindWithTag("Player").GetComponent<PlayerController>();

    }

    public GameObject DenteResp;
    private GameObject ItemNaMandibula;
    public bool DenteCerto;


    private void Update()
    {

        try
        {
            ItemNaMandibula = this.transform.GetChild(1).gameObject;

            if (ItemNaMandibula.transform.tag == DenteResp.transform.tag)
            {
                DenteCerto = true;

            }

            if (ItemNaMandibula.transform.tag != DenteResp.transform.tag)
            {
                DenteCerto = false;
                print(DenteCerto);


            }

        }


        catch (Exception ex)
        {

            if (DenteResp.transform.tag == "Vazio" && !ItemEmCima)
            {
                DenteCerto = true;


            }

            else
            {
                DenteCerto = false;

            }
        }


        if (DenteResp.transform.tag == "Vazio" && ItemEmCima)
        {
            DenteCerto = false;

        }



    }

在这种情况下,如果DenteCerto为假,我只想破坏对象:

             {
                 DenteCerto = false;
             }

我不知道该怎么办。

0 个答案:

没有答案