Классы в программировании игр

Всем доброго времени суток, сегодня я буду рассматривать классы. Что позволяют делать классы?

 

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

 

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

Пример создания нового класса
Dante

 

Как видите мы создали новый класс который называется Man‘, затем объявляем переменную, public string nameэто имя, переменную задаем публичную, для того чтобы мы могли к ней обратится. Я не заморачивался с тем чтобы создавать возможность выбора мужчины, женщины, пока создаю просто мужчину пример. Может когда попозже. Далее задаем переменную, возраст public int age‘.

 

Для того чтобы вызвать наш класс, я в пятой строке можете видеть ввел название класса Man‘, затем название переменной, как мы её назовем. Дальше равно new Manто есть создаем новый конструктор. Конструктор это функция Manв классе, потом когда-то конструктор буду рассматривать. Сейчас о классах. И в функции Startмы пишем название класса и присваиваем ему имя, то есть m.name=»Dante»‘. Затем задаем возраст нашего человека. Как видите почти также как имя m.age = 32

 

Подобным же образом можно задать имя и возраст второму человеку, просто ссылаясь на сделанный класс, давайте и это в качестве примера сделаем, и пожалуй давайте сделаем всех наших персонажей клонами одного года и всем зададим возраст по умолчанию 32:

Пример создания имени второго персонажа
Dante

 

Как видите мы сделали переменную ageстатичной, и теперь мы обращаемся к глобальному классу Man.ageи приравниваем значение 32. второе имя задано так же как и первое, только здесь мы создали название новой переменной nи в функции приравняли слову Steve‘. Но возраст его такой же как и того что мы создали ранее, он не может быть иной. Так же для того чтобы вывести имя мы создали новую публичную функцию voidв классе Manи она не статична, так как её задача обратиться к определенному персонажу используя функцию Logи для того чтобы вывести имя персонажа в качестве действия функции мы пишем Debug.Log (name)как видите в скобках указана переменная имя персонажа. И в функции Startмы пишем чье имя мы непосредственно выводим Debug.Log (m.name)‘. Сохраняем лепим к камере и запускаем игру в Unity, и выводится имя персонажа m‘. У меня все вывелось без ошибок.

 

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

Пример конструктора возраста и имени
Dante

 

Давайте разберем что мы наваяли, Начнем с низу, с нашего класса, Задали две публичные переменные, имя и возраст name и age‘, мы сделали публичный конструктор Manи задали ему в скобках тип переменных и прочерк и имя переменных, если сделаете его не публичным то выдаст ошибку, так как не получится к нему обратится. Теперь посмотрим выше, где задаем нашего персонажа, Man m=new Man(«Dante», 32)как видите здесь в строку пишем имя и возраст, и все правильно, так как отсюда ссылается на наш конструктор где это все задано. Ну и в функции Startнепосредственно выводим имя персонажа nв консоль. Сохраняем скрипт и запускаем в игре, и все правильно в консоли выводится необходимое имя.

 

Также существует такая вещь как наследование класса, вы можете видеть это в любом скрипте урока, у нас задан класс и через двоеточие задается иной класс. Найдите это сами выглядит как Lessons1 : MonoBehaviour‘. То есть здесь мы имеем класс который мы усовершенствовали при помощи функций. То есть скажем так тот же самый класс только обновленный. Более подробно буду рассматривать в дальнейшем, сейчас пока не буду, просто надо знать что оно есть и как выглядит. То есть наследование это некое усовершенствование существующего класса. То бишь есть класс родитель MonoBehaviourи класс наследуемый Lessons1как правильно называется не помню, но принцип надо понять. Да и вроде пока не сложно.

 

Хочется верить что это не на столько сложно как мне кажется и я не сделал объяснение через чур запутанным. Я сам учусь постепенно, с той скоростью, как и пишу. Кстати в интернете есть видеоуроки по данной теме. Я по сути дела учусь с них. Всем удачи.

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

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