Pull to refresh
1
0
Send message

Пару советов по поводу оптимизации.

  1. Пореже обращаться напрямую к полю transform.position объектов, особенно в часто вызываемых методах типа Update или в циклах, т.к. вызывается extern метод get_transform_Injected, что ресурсозатратно. Например, если есть возможность, постарайтесь кэшировать вектор позиции, особенно, если его значение не меняется. К примеру, ваш код ниже

private IEnumerator Spawn()
    {
        float minPositionY = transform.position.y - _devationPositionY;
        float maxPositionY = transform.position.y + _devationPositionY;

        while (_isGameOver == false)
        {
            float positionY = Random.Range(minPositionY, maxPositionY);

            _spawnTime = Random.Range(_minDelay, _maxDelay);

            var waitForSeconds = new WaitForSeconds(_spawnTime);

            GameObject gameObject = Instantiate(_templates[Random.Range(0, _templates.Length)],
                new Vector3(transform.position.x, positionY, transform.position.z), Quaternion.identity);

            yield return waitForSeconds;
        }
    }

можно слегка изменить и получить

private IEnumerator Spawn()
    {
        var spawnPosition = transform.position;
        float minPositionY = spawnPosition.y - _devationPositionY;
        float maxPositionY = spawnPosition.y + _devationPositionY;

        while (_isGameOver == false)
        {
            float positionY = Random.Range(minPositionY, maxPositionY);

            _spawnTime = Random.Range(_minDelay, _maxDelay);

            var waitForSeconds = new WaitForSeconds(_spawnTime);

            GameObject gameObject = Instantiate(_templates[Random.Range(0, _templates.Length)],
                new Vector3(spawnPosition.x, positionY, spawnPosition.z), Quaternion.identity);

            yield return waitForSeconds;
        }
    }

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

  1. Вопреки мнению в комментарии другого пользователя

Для оптимизации нужно будет удалять все объекты, выходящие за экран...

много раз создавать и удалять однотипные объекты (например снаряды в шутерах или бомбы и фоновые объекты в вашей игре) методами GameObject.Instantiate и GameObject.Destroy не рекомендуется из-за количества создающегося мусора (особенно, если объект с большим количеством полей) и лишней нагрузки на процессов. Рекомендую посмотреть в сторону Пулов Объектов и вместо того, чтобы постоянно создавать и удалать новые объекты, вы создаете определенное их количество в Пуле при старте и при необходимости достаете их из этого пула, а вместо удаления просто делаете объекты неактивными. Если интересно, гляньте статью https://www.kodeco.com/847-object-pooling-in-unity .

Далее в таблице можно посмотреть, какие браузеры поддерживают WebAuthn. Красный цвет — отсутствие поддержки, зеленый — полная совместимость, а горчичный — частичная поддержка.

Сколько ни смотрел - не увидел в таблице этих цветов

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Game Developer