Большинство разработчиков Unity знают, что не следует злоупотреблять ресурсоемкими операциями, такими как выборка компонентов.
Для этого вам следует использовать кэширование .
Но даже для такой простой оптимизации можно найти несколько разных подходов.
В этой статье будут рассмотрены различные варианты кэширования, их неочевидные особенности и производительность.
Стоит отметить, что в основном мы будем говорить о «внутреннем» кэшировании, то есть получении тех компонентов, которые есть на текущем объекте, для его внутренних нужд. Для начала откажемся от прямого назначения зависимостей в инспекторе — это неудобно в использовании, засоряет настройки скрипта и может привести к неработающим ссылкам при сбое редактора.
Поэтому мы будем использовать GetComponent().
Базовые знания компонентов и простой пример кэширования.
В Unity3D каждый объект игровой сцены представляет собой контейнер (GameObject) для различных компонентов (Component), которые могут быть как встроены в движок (Transform, AudioSource и т. д.), так и в пользовательские скрипты (MonoBehaviour).
Компонент можно назначить прямо в редакторе, а для получения компонента из контейнера в скрипте используется метод GetComponent().
Если компонент необходимо использовать более одного раза, традиционный подход — объявить для него переменную в скрипте, где он будет использоваться, один раз взять необходимый компонент и затем использовать полученное значение.
Пример:
Теги: #C++ #Разработка игр #кэширование #unity3d #gamedev #теги всё равно никто не читает #Разработка игр #C++ #unitypublic class Example : MonoBehaviour {
-
Урок Yammer: Преобразование Регистрации
19 Oct, 24 -
Выпущен Ext Js 4
19 Oct, 24 -
Рекомендации На Авито
19 Oct, 24