Функции в разработке игр

Доброго времени суток, давайте сегодня рассмотрим что такое функции. Пока рассмотрим их несколько поверхностно, давайте открываем Unity3d и создадим новую функцию:

Создаем новую функцию
Dante

 

Объявляется она при помощи слова voidчто это такое я потом объясню, когда-то, сейчас оно все равно не очень нужно. Затем идут скобки, после которых ставим фигурные скобки которые обозначают начало и конец функции. В принципе мы здесь еще видим функцию Start и Update.

 

Функция Start, это функция которая вызывается при создании какого-либо объекта, в начале работы всего скрипта. Функция Update вызывается каждый кадр, то есть если у вас игра 60кадров в секунду, то функция выполнится 60 раз за секунду. Давайте сегодня займемся нашей написанной функцией.

 

В функции можно сделать например какое-нибудь действия, я не буду придумывать велосипед, буду просто выводить Debug.Log в консоли Unity. Хотя опять же, Debug.Log это функция, в классе Debug, существует функция Log, Log это вывести переменную. Вообще там с этим Log целая история, там обращение к консоли, вывод этого сообщения, убеждение того что это не ошибка, и тд. Итак, давайте берем наши уроки и записываем вывод новой записанной функции в функции Start. Сделаем скрипт подобного вида.

Обращаемся к новой функии
Dante

 

Как видим данный скрипт просто обращается к нашей новой функции из функции Start, а наша новая функция, выводит строковую переменную, сохраняем скрипт, прикрепляем его к объекту Unity и запускаем игру, действительно в консоли выводится наша строковая переменная.

 

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

 

Debug.Log(«12345678»);

 

Снова сохраняем скрипт и проверяем что он покажет в Unity и мы видим выводится уже две переменные.

 

Вы можете подумать, а что здесь такого, можно просто в функции Start два раза вывести функцию и все, во-первых, если мы все будем писать в функции старт, то нам будет очень не удобно потом с кодом разбираться. Так что лучше разделять по функциям.

 

Давайте уже перейдем дальше. Зададим строковую переменную для нашей функции:

Переменная для функции
Dante

 

Теперь сохраняем эту функцию и запускаем игру, и смотрим. Консоль нам говорит о том что выполняется одна и та же функция, но выдает разные значения переменной. Для тех кто не понял, смотрим и внимательно читает то что сообщается в консоли Unity 3d.

 

Давайте напишем возврат переменной:

Возвращаем переменную
Dante

 

Что мы здесь имеем. Здесь мы задаем переменную byteg=0, при этом g=Нашей функции, то есть если заданная функция выполняется, то выводится некоторое значение f‘, и приравнивается значение g. При этом fзнает только функция

 

byte NewFunction(string s){

// Debug.Log(s);

byte f = 231;

return f;

}

 

И получается получить значение из данной функции не возможно. Но при помощи returnмы возвращаем значение функции. Кстати, в данном примере return работает только для byteтак как мы написали byteв нашем примере. Если бы было написано intто возвращение функции работало бы только для intи тд. Для того чтобы узнать что действительно было возвращено значение fмы написали Debug.Log(g); что выведет в консоль значение переменной g=f. Да и Debug.Log(s); как можете видеть я закомментировал для того чтобы ничего не выводилось, но можете её даже удалить, результат не изменится.

 

Сохраняем и запускаем нашу игру. И видим в консоли Unity3d вывелось значение возвращенной переменной.

 

Хочется надеяться что-то что я писал понятно, я пока не вдавался в такие функции как публичные и приватные. Они нам понадобятся в будущем, и рассматривать тоже буду по ходу. И так через несколько статей я окончу данный цикл программирования в Unity3d для самых новичков. И потом перейду к созданию простенькой игры, и походу в дальнейшие дебри Unity3d и программинга.

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

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