Приватные и публичные переменные

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

 

Давайте рассмотрим это детальней, загружаем Unity3d, открываем скрипт с уроком и смотрим, мы имеем две функции Startи Update‘. Функция Startработает только в тот момент когда скрипт загружается, в самом начале, дальше об этом коде программа забывает и не трогает его больше. Дальше программа обращается к коду в функции Update‘, то есть код находящийся в функции Updateэто то что происходит каждый кадр в нашей игре. Например если у вас fps=60 то есть у вас 60 кадров в секунду, то в секунду данная функция выполняется 60 раз. Переменные которые находятся в функции Startявляются приватными, приватные переменные не могут больше нигде использоваться. Переменные же которые находятся в функции Updateявляются общественными.

 

Давайте в нашем скрипте проверим что приватные переменные нельзя изменять, открываем наш скрипт и пишем что-то подобное:

Код объявления приватных и публичных переменных
Dante

 

Как вы можете заметить, мы объявляем приватные переменные xи zв функции Start‘, затем объявляем публичную переменную yи дальше пробуем каждый кадр задать изменение переменной xто есть x+=1то есть каждый кадр переменная xдолжна изменяться на единицу. Сохраняем скрипт, навешиваем на камеру и смотрим что Unity3d выдает нам ошибку, так как он не знает о переменной x‘. И правильно что Unity3d ничего о данной переменной не знает, потому что данная переменная используется только в функции Start‘. Если мы объявим данную переменную в функции Update‘, то это будет другая переменная xи у нее будет свое значение.

 

Это может показаться неудобным, то есть если вы объявили yв функции Updateеё нельзя объявить в функции Start‘, потому что её на экран вывести не получится, скрипт ошибку выдаст. Но чтобы переменные выводились везде, нам необходимо задать их до функции, то бишь чтобы они относились сразу ко всем функциям, как то так:

Объявление приватной переменной доступной другим функциям
Dante

 

Как мы можем видеть мы задали переменную xв самом начале, и поэтому нам её уже не нужно объявлять в функции Start‘, а нам достаточно просто её приравнять к необходимому значению, она выполнится при старте, и дальше перейдет к функции Updateи будет каждый кадр увеличиваться на единицу. Соответственно ошибки здесь не будет. Хоть данная переменная и приватная, но она у нас выходит как публичная. Да кстати необходимо указывать что данная переменная является приватной, это не обязательно, но обычно пишется для того чтобы не запутаться. То есть надо писать:

Задаем приватную переменную
Dante

 

То есть данная приватная переменная используется от первой фигурной скобки, до последней, и дальше в скрипте она использоваться не будет. Поэтому она будет использоваться только в классе, у меня в частности public class Lessons1 : MonoBehaviourи если мы зададим какой-либо иной класс, то в нем уже нельзя будет использовать данную переменную. Так как другой класс об этой переменной не будет ничего знать.

Но если мы объявим её не как private‘, а объявим её как publicто она будет известна и в иных классах. Только нужно будет непосредственно обращаться к классу Lessons1и переходить. Собственно надо будет обращаться Lessons1.x‘, а если она будет приватно, то нельзя так будет обращаться.

Для чего это необходимо? Ну для того к примеру чтобы в игре нельзя было обратится к данной переменной и изменить её по желанию, к примеру выставив себе вагон маны и 100500 здоровья. То есть это просто защита данных. То есть чтоб нельзя было, читы, к примеру к игре написать и тому подобное.

Хочется надеяться что данное объяснение было понятным. И понял не только я, но и кто-то кто будет читать, если конечно такой будет. До следующей статьи.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *