Какой запрос переменной обрабатываеться быстрее?

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

Какой запрос переменной обрабатываеться быстрее?

Сообщение kostya05 12 сен 2013, 19:26

Допустим у меня на объекте obj1 лежит c# скрипт script1, я из скрипта 2 делаю запрос переменной perem1 лежащей в script1, как быстрее обработает комп?
1) сделать perem1 статичной и запросить: script1.perem1
или
2) оставить переменную не статичной и запросить: GameObject.Find("obj1").GetComponent<script1>().perem1
kostya05
UNIт
 
Сообщения: 63
Зарегистрирован: 30 июл 2013, 16:01

Re: Какой запрос переменной обрабатываеться быстрее?

Сообщение aitechtor 12 сен 2013, 19:37

ИМХО: Со статичной будет быстрее, так как она все время висит в стеке (оперативной памяти), поэтому доступ к ней моментальны, так как не тратится время на создание объекта или переменной и на его удаление, не тратится время на Find() и прочее.
Но учтите, статичные переменные создаются и живут в стеке до окончания программы, т.е. они постоянно занимают какое-то место в оперативной памяти и не высвобождают ее, до тех пор, пока программа не завершится. Поэтому с ними нужно быть осторожными. Ничего страшного не будет, если вы будете хранить в стеке несколько bool, int или string переменных.
Но старайтесь не делать статичными объекты и функции, и если уж делаете, то понимайте, зачем вы это делаете.
Обычно делают так:
- статичные переменные используют, как глобальные переменные;
- статичные функции и объекты используют, когда нужен максимально быстрый доступ к каким-то данным.

Учтите, если в сделаете ее статичной, то она станет общей разделяемой переменной того класса, в котором создана (т.е. глобальной переменной). Т.е. она будет общей для всех, а не так, что на каждом объекте будет создаваться своя со своим значением.
Последний раз редактировалось aitechtor 12 сен 2013, 19:42, всего редактировалось 1 раз.
aitechtor
UNIт
 
Сообщения: 143
Зарегистрирован: 07 июн 2013, 17:09

Re: Какой запрос переменной обрабатываеться быстрее?

Сообщение murzilka6002 12 сен 2013, 19:39

...или можно к одному скрипту добавить референцию на другой, и иметь прямой доступ к переменной, не статической
Или создать глобальный скипт в котором будут создавваться объекты других скриптов и происходить все действия над ними - и здесь тоже не нужно тогда создавать статические переменные
murzilka6002
UNIт
 
Сообщения: 57
Зарегистрирован: 10 авг 2013, 11:48

Re: Какой запрос переменной обрабатываеться быстрее?

Сообщение qwerty74 12 сен 2013, 19:40

Еще лучше вообще не использовать find и GetComponetnt, а зарание сохранять ссылку на объект
qwerty74
UNITрон
 
Сообщения: 201
Зарегистрирован: 14 мар 2012, 14:03

Re: Какой запрос переменной обрабатываеться быстрее?

Сообщение kostya05 12 сен 2013, 20:08

murzilka6002 писал(а):можно к одному скрипту добавить референцию на другой, и иметь прямой доступ к переменной, не статической

Как это? Можете привести пример кода?
qwerty74 писал(а):Еще лучше вообще не использовать find и GetComponetnt, а зарание сохранять ссылку на объект

Как именно? Знаю пока только, как через статичную и GetComponetnt получать переменную в другом скрипте.
kostya05
UNIт
 
Сообщения: 63
Зарегистрирован: 30 июл 2013, 16:01

Re: Какой запрос переменной обрабатываеться быстрее?

Сообщение qwerty74 12 сен 2013, 20:12

Как именно? Знаю пока только, как через статичную и GetComponetnt получать переменную в другом скрипте.


в начало скрипта добавить
public script1 Name;
и в инспекторе назначить объект
или искать его в старте
qwerty74
UNITрон
 
Сообщения: 201
Зарегистрирован: 14 мар 2012, 14:03

Re: Какой запрос переменной обрабатываеться быстрее?

Сообщение murzilka6002 12 сен 2013, 20:54

Но тоже вариант, сделать общий главный клас, добавить его в пустой объект, и к нему добавлять уже остальные скрипты как
qwerty74 писал(а):в начало скрипта добавить
public script1 Name;
и в инспекторе назначить объект
или искать его в старте
И в нем воспроизводить апдейты, различные манипуляции между скриптами, тогда легче их контролировать.
murzilka6002
UNIт
 
Сообщения: 57
Зарегистрирован: 10 авг 2013, 11:48


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

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

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