использовать переменную, как логическое значение в Unity? - PullRequest
0 голосов
/ 08 апреля 2020

Можно ли использовать переменную, например, логическое в единице?

var firstCanvas_ = firstCanvas.GetComponent<RectTransform>().localPosition.x == 0

if (firstCanvas_)
        {

            Do something


        }
       if (!firstCanvas_)
        {
           do another thing
        }

отредактировано, чтобы включить более длинную версию этой идеи. То, что я пытаюсь сделать sh, это включить другой компонент сцены на основе прямоугольного преобразования (положения) панелей пользовательского интерфейса. Каждый раз, когда я go между панелями, я нажимаю кнопку, и эта кнопка вызывает функцию UpdateScreens():

public void UpdateScreens()
    {
        var artSelectionCanvas0_ = artSelectionCanvas.GetComponent<RectTransform>().localPosition.x == 0;
        var measureCanvas0_ = measureCanvas.GetComponent<RectTransform>().localPosition.x == 0;
        var artModeCanvas0_ = artModeCanvas.GetComponent<RectTransform>().localPosition.x == 0;
        var portfolioCanvas0_ = portfolioCanvas.GetComponent<RectTransform>().localPosition.x == 0;
        var purchaseCanvas0_ = purchaseCanvas.GetComponent<RectTransform>().localPosition.y == 0;

        // # 1
        //If ArtSelection Canvas ON 

        if (artSelectionCanvas0_)
        {
            Debug.Log("artSelectionCanvas0_ Active");
        }

        // # 2 
        //If Measure Canvas ON
        if (measureCanvas0_)
        {
            Debug.Log(measureCanvas0_);
            Debug.Log("sphere should be ON");
            createPoints.GetComponent<CreatePoints>().enabled = true;
            sphere.GetComponent<MeshRenderer>().enabled = true;


        }
       if (!measureCanvas0_)
        {
            Debug.Log("sphere should be OFF");
            createPoints.GetComponent<CreatePoints>().enabled = false;
            sphere.GetComponent<MeshRenderer>().enabled = false;
        }

        // # 3
        //If ArtMode Canvas ON
        if (artModeCanvas0_)
        {
            createPoints.GetComponent<CreatePoints>().enabled = false;

        }

        // # 3
        //If ArtMode Canvas Off
        if (!artModeCanvas0_)
        {
            var GeneratedPlanes = GameObject.FindGameObjectsWithTag("Plane");

            for (int j = 0; j < GeneratedPlanes.Length; j++)
            {
                GeneratedPlanes[j].GetComponent<MeshRenderer>().enabled = false;
            }
            var GeneratePointCloudExample = GameObject.FindGameObjectsWithTag("GeneratePointCloudExample");

            for (int j = 0; j < GeneratePointCloudExample.Length; j++)
            {
                GeneratePointCloudExample[j].GetComponent<ParticleSystemRenderer>().enabled = false;
            }
        }
    }

. Теперь я переключаюсь на использование IEnumerator, который работает, но работает медленно. Не уверен, почему при использовании обычной функции она не будет работать.

 public void UpdateScreens_()
    {
        StartCoroutine(UpdateScreens());
    }


       IEnumerator UpdateScreens()
    {
        yield return new WaitForSeconds(0.5f);


        Debug.Log("Hellllo");
        // # 1
        //If ArtSelection Canvas ON 
        if (PositionMasterController_.artSelectionCanvasOn)
        {

            var GeneratedPlanes = GameObject.FindGameObjectsWithTag("Plane");

            for (int i = 0; i < GeneratedPlanes.Length; i++)
            {
                GeneratedPlanes[i].GetComponent<MeshRenderer>().enabled = false;
            }

            var GeneratePointCloudExample = GameObject.FindGameObjectsWithTag("GeneratePointCloudExample");

            for (int i = 0; i < GeneratePointCloudExample.Length; i++)
            {
                GeneratePointCloudExample[i].GetComponent<ParticleSystemRenderer>().enabled = false;
            }
            sphere.GetComponent<MeshRenderer>().enabled = false;

        }
            // # 2 
            //If Measure Canvas ON
            if (PositionMasterController_.measureCanvasOn)
            {
                Debug.Log("fuc2k");
            var GeneratedPlanes = GameObject.FindGameObjectsWithTag("Plane");

            for (int i = 0; i < GeneratedPlanes.Length; i++)
            {
                GeneratedPlanes[i].GetComponent<MeshRenderer>().enabled = false;
            }

            var GeneratePointCloudExample = GameObject.FindGameObjectsWithTag("GeneratePointCloudExample");

            for (int i = 0; i < GeneratePointCloudExample.Length; i++)
            {
                GeneratePointCloudExample[i].GetComponent<ParticleSystemRenderer>().enabled = false;
            }
            Debug.Log("sphere should be ON");
            createPoints.GetComponent<CreatePoints>().enabled = true;
            sphere.GetComponent<MeshRenderer>().enabled = true;


            }
        if (!PositionMasterController_.measureCanvasOn)
        {
            Debug.Log("sphere should be OFF");
            createPoints.GetComponent<CreatePoints>().enabled = false;
            sphere.GetComponent<MeshRenderer>().enabled = false;
        }

        //# 3
       // If ArtMode Canvas ON
            if (PositionMasterController_.artModeCanvasOn)
        {
            var GeneratedPlanes = GameObject.FindGameObjectsWithTag("Plane");


            for (int i = 0; i < GeneratedPlanes.Length; i++)
            {
                GeneratedPlanes[i].GetComponent<MeshRenderer>().enabled = true;
            }

            var GeneratePointCloudExample = GameObject.FindGameObjectsWithTag("GeneratePointCloudExample");

            for (int i = 0; i < GeneratePointCloudExample.Length; i++)
            {
                GeneratePointCloudExample[i].GetComponent<ParticleSystemRenderer>().enabled = true;
            }
        }


        ////// # 3
        //////If ArtMode Canvas Off
        if (!PositionMasterController_.artModeCanvasOn)
        {

            var GeneratedPlanes = GameObject.FindGameObjectsWithTag("Plane");

            for (int i = 0; i < GeneratedPlanes.Length; i++)
            {
                GeneratedPlanes[i].GetComponent<MeshRenderer>().enabled = false;
            }

            var GeneratePointCloudExample = GameObject.FindGameObjectsWithTag("GeneratePointCloudExample");

            for (int i = 0; i < GeneratePointCloudExample.Length; i++)
            {
                GeneratePointCloudExample[i].GetComponent<ParticleSystemRenderer>().enabled = false;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...