kekland
Использование struct (Структуры) в Unity (C#)
Пост предназначен для новичков в программировании.
Сразу возникает вопрос, почему бы не использовать классы вместо структур - дело в том, что структурами можно пользоваться непосредственно, а не по ссылке, и оно полезно для хранения малого объема данных, благодаря которому можно немного сэкономить ОЗУ.
Структуры могут быть полезны в ряде моментов в программировании логики игры, например в играх как 4 фотографии 1 слово, системы инвентарей и.т.д.
Начнем с объявления структур.
Структуры определяются ключевым словом struct. Тело структуры открывается и закрывается фигурными скобками. В целом, структура во многом похоже на класс, но не поддерживает полиморфизм и наследование.
Например, возьмем в качестве примера структуру Cost
P.S. [System.Serializable] используется для сериализации структуры в инспекторе.
Как можно увидеть, структура хранит в себе целочисленные типы данных (int), такие как НормальнаяЦена, МинимальнаяЦена и МаксимальнаяЦена. Эту структуру можно использовать для рандомизации цены объекта, например как в моем текущем проекте "Симулятор перепродажи".
Так же, структура может иметь в себе конструктор :
Конструктор используется для быстрого заполнения данных (переменных) в структуре.
Данную структуру можно заполнить 3 способами :
1. Ручным методом заполнить все 3 переменные.
2. Использовать конструктор и ключевое слово new
3. Использовать инспектор Unity
Первый и второй способ может быть полезен например при генерации мира.
Тут :
1. Структура Блок, хранящий в себе ИД блока и позицию
2. Способ заполнения конструктором
Заметьте, что [System.Serializable] тут не используется, так как нам не нужно вручную заполнять структуру в инспекторе. Но, для дебага (отладки) оно может быть необходимо.
Вернемся к теме структуры Cost. Для использования данной структуры в полной мере была создана еще одна структура под названием Item (вещь).
Как можно заметить, в этой структуре хранится куда больше переменных чем в структуре Cost, а так же в ней хранится сама структура Cost, то есть структуры могут быть в качестве переменных в структурах.
Для отображения в инспекторе был поставлен параметр [System.Serializable].
Эта структура хранит в себе название, описание вещи, его спрайт, онлайн-картинка и шанс выпадения (в комментариях - от 0 до 100%) и цену. Для его инициализации в классе наследуемом MonoBehaviour была написана данная строчка :
Имеется массив с используемыми в игре объектами. Для его заполнения я буду использовать инспектор, так что от конструктора отказался. В инспекторе это дело выглядит так :
Заполняем :
Как видим, мы заполнили 1 структуру Item информацией о Xbox One (цены брал на рандоме). Для использования переменных, например, чтобы показать этот объект на сайте, пишем название_массива[i].название_переменной, где i - номер объекта (в данном случае 0).
Теперь, давайте же заполним UI Image и UI Text-ы нашими данными. Для этого я быстро создал простенький UI
Затем, немного доработал скрипт, добавил переменные с текстами и картинками и метод Старт.
P.S. Цена выбирается рандомно между минимальной и максимальной ценой.
Теперь, запускаем игру и видим, что текст поменялся.
Если слишком шакалисто - Xbox One; Cool new Xbox One; 353$ и буква X :)
Ну, на этом то и все, спасибо что прочитали мой пост :)
Баянометр показывает сходство с постом про Ведьмака.
Обновление Lost in Space [0.3c]
Доброго дня, пикабушники! :)
Все эти 11 дней новогодних праздников прошли в лучшую сторону для моей игры :)
Заранее хочу сказать спасибо пикабушнику @dagromov за помощь с рисованием спрайтов :D
Кратко о нововведениях в игре :
1) Изменена графика
2) Добавлен робот-помощник
3) Новый UI
4) Добавлен кислород, голод, жажда и радиация.
5) Немного поменялся жанр игры, теперь он Survival Tower Defense (TD).
Скриншоты новой версии игры : (еще не доконца закончил UI, остались надписи справа вверху)
Вот он, робот, сзади главного героя :)
У него есть 2 режима, 1 - стрелять, 2 - собирать. При 1ом режиме робот, при обнаружении врага на 25метров открывает огонь по нему. А при втором режиме робот при обнаружении камня/растении останавливается у него и начинает собирать. При окончании процесса в инвентаре игрока появляется добытая вещь.
(Дальше в инвентаре вещи еще не нарисованы)
Это наверное главные нововведения за последние дни, кроме этого еще было кучу багфиксов :)
О новом направлении игры (TD) расскажу позже когда это реализую.
P.S. видео с геймплеем не могу выложить, так как не хватает рейтинга.
P.P.S. поменял ссылку на группу ВКонтакте : vk.com/a_lostinspace
Нужна помощь 2D художника
Доброго утра, пикабу!
Мне нужна помощь 2D художника, так как я не умею нормально рисовать, ввиду отсутствия прямых рук(
Конвертирую пиксельную игру в не пиксельную, хотел перерисовать анимацию бега персонажа, а получилась такая ерунда(
После этого я понял, что не умею рисовать, и решил попросить вашу помощь :)
Заранее спасибо за помощь :)
P.S. ВК - http://vk.com/kekland322
Lost in Space [Beta 0.3A]
Доброго утра/дня/вечера, пикабу!
Сегодня я наконец-то выпустил бету своей игры :)
(Кто не читал) Длиннопост о игре : http://pikabu.ru/story/lost_in_space_igra_3884467
Хотел я добавить видео с геймплеем игры, да не хватает у меня рейтинга :(
Ссылка : http://vk.com/kekland_lis?w=wall-107580426_99
Пока скачиваете можете прочитать управление и установку :)
Управление :
A,D - налево, направо (ходить)
W - наверх (включить джетпак)
S - вниз (отключить джетпак, включить модуль падения)
R - получить вещи (лутать)
Клик по вещи в инвентаре - бросить вещь (мини-инвентарь слева сверху экрана)
Клик по косм. кораблю - зайти в инвентарь корабля - "убежища".
Установка :
Закинуть 2 файла (папку и .exe файл) в любое место на компьютере, главное чтобы они были вместе :D (скоро сделаю инсталлятор)
Есть баг в меню, когда не показывается очки навыков, не могу понять почему.
Игра еще на стадии девелопинга, так что прошу обо всех багах и глюках писать сюда :
http://vk.com/topic-107580426_32683588
Удачи всем и хорошего дня :)
P.S. поднимите в топ пожалуйста, а то невозможно будет все баги найти, спасибо за поддержку :)
P.P.S. с наступающим :D



















![Lost in Space [Beta 0.3A]](https://cs5.pikabu.ru/post_img/2015/12/30/8/1451477323157673306.png)
