как избавиться от GetComponent()?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: как избавиться от GetComponent()?

Сообщение Woolf 25 фев 2013, 00:33

Мой вас совет - не занимайтесь ерундой. Если по поводу Find - это справедливо, то уж getComponent оптимизировать - это лишнее. Но! Если вам все-таки хочется это оптимизировать, то в скрипте Объявите переменную нужного класса и инициализируйте её на Awake или Start Gameobject-a.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: как избавиться от GetComponent()?

Сообщение pod4444 26 фев 2013, 19:54

для самых популярных аля transform, rigidbody, gameObject можно делать кэш-свойства, кажется они описаны в статье. я давно сделал оболочку для монобеха где просто делаю так:
Синтаксис:
Используется csharp
        private Transform cachedTransform;

        public new Transform transform
        {
            get
            {
                if (cachedTransform == null)
                    cachedTransform = base.transform;
                return cachedTransform;
            }
        }
 

нужно это только в скриптах где реально идут большие вычисления, например, над позицией объекта, но это одноразовая работа, потому если можно, то почему бы нет?
хотя в противовес можно сказать, что это еще одно звено в цепи наследования и это будет правдой.
я уверен, что у вас есть более неоптимизированные места, которые жрут гораздо больше ресурсов, чем эта мелочь
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Пред.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27