Переход на случайный фон, вызывающий отставание на Android - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь изменить фон моей игры, и она работает, но также вызывает отставание на Android.

Я связал два разных решения, но с одинаковыми результатами.Прежде всего, с изменением фона управляет переменная int, которая имеет случайное значение между двумя числами и число с плавающей точкой, которое увеличивается каждую секунду на 10f, что используется как оценка.

Здесь также есть некоторый другой код, ноЯ удалил их отдельно, и кажется, что это фоновый код, который вызывает отставание.

Вот текущий код:

        rand1 = Random.Range(0, 4);
        rand2 = Random.Range(4, 8);
        rand3 = Random.Range(8, 12);


        //start off with a random blue background
        BGlist[rand1].SetActive(true);
        // BGmesh.material = BGmat[rand];  //OTHER SOLUTION - change material of mesh renderer

    }


    void Update()
    {
        //Set starttext to false if the character move
        if (lvlmang.left || lvlmang.right)
        {
            startText.SetActive(false);

            //every second score and speed increases
            aliveTime += Time.deltaTime;
            if (aliveTime >= 1)
            {
                scores += 10f;
                scores2 += 10f;
                speedManager += 10f;

                speedManager2 += 10f;

                speedManager3 += 10f;




                scoreText.text = scores.ToString();
                scoreText2.text = scores2.ToString();
                aliveTime -= (int)aliveTime; //reset
            }

        }
        //Increase speed after 8 seconds
        if (speedManager == 80f)
        {
            pControl.speed += 0.25f;
            speedManager = 0f;
        }

        //start screen fade every 30 seconds (preparing for background change)
        if (speedManager2 == 300f)
        {
           fadingBG.StartFading();
            speedManager2 = 0f;
        }

        if (speedManager3 == 310f || speedManager3 == 1213)
        {
            //Random yellow background


            //Set the previous backgrounds game object to false
                BGlist[0].SetActive(false);
                BGlist[1].SetActive(false);
                BGlist[2].SetActive(false);
                BGlist[3].SetActive(false);



            BGlist[rand2].SetActive(true);  //Random yellow background
            //BGmesh.material = BGmat[rand]; // OTHER SOLUTION - change material of mesh renderer
            fadingBG.StopFading();
            speedManager3 += 1f;

        }


        if (speedManager3 == 611f || speedManager3 == 1514)
        {
            //Random red background


            //Set the previous backgrounds game object to false
            BGlist[4].SetActive(false);
            BGlist[5].SetActive(false);
            BGlist[6].SetActive(false);
            BGlist[7].SetActive(false);


            BGlist[rand3].SetActive(true); //Random red background
            // BGmesh.material = BGmat[rand];
            fadingBG.StopFading();
            speedManager3 += 1f;

        }


        if (speedManager3 == 912f || speedManager3 == 1815)
        {
            //Random blue background

            //Set the previous backgrounds game object to false
            BGlist[8].SetActive(false);
            BGlist[9].SetActive(false);
            BGlist[10].SetActive(false);
            BGlist[11].SetActive(false);

            BGlist[rand1].SetActive(true); //Random blue background
            // BGmesh.material = BGmat[rand];
            fadingBG.StopFading();
            speedManager3 += 1f;

        }
    }

Итак, я попытался изменить материал рендера меша, а также сделать отдельные игровые объекты для каждого фона, который я установил активным и ложным.

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

1 Ответ

1 голос
/ 07 июня 2019

Основная проблема заключается в том, что вы вызываете Random в обновлении, и это убивает производительность (я знаю, потому что я сделал ту же ошибку несколько лет назад). Если вы знаете, что хотите сгенерировать несколько значений Random, вам следует это сделать только 1 раз (например, в меню «Пуск»), сохранить их в массиве и использовать позже. Если ваш массив пуст, вы можете снова вызвать метод для генерации нескольких случайных значений 1 раз. Помните, что никогда не вызывайте Random в Обновлении, избегайте каких-либо сложных вычислений в каждом кадре (это включает не только Random, но и деление, если возможно, чтобы избежать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...