Dreaman Dreaman

Mariya, законченный вариант реально классно выглядит! Молодец :)

Mariya Mariya

Всем привет!
Сегодня хочу показать законченный вариант домика Сырны.

alexprey alexprey

StarPlosion: Битва с пиратами за планету

Wings' might Wings' might

Всем привет)
Добавил на этой неделе начальное окно, новую валюту и достижения:

alexprey alexprey

shadeborn, может быть они нашли способ как обойти полноценный запуск этих сервисов при запуске игры? Если так, то почему бы и не использовать единый клиент?) В любом случае, чем дальше все идет, там это все больше становится похоже на эту шутку

...
shadeborn shadeborn

Это всё круто, но...зачем? Ок есть Стим. Хорошо, теперь еще и ЕГС есть. Благо, комп не зашкварен Оригином...но у людей и он стоит. И для работы игр внутри этих сервисов нужны, собсно, эти сервисы. Так поверх этих сервисов нужно накатить еще один...

Devion Devion

согласен, есть кейсы которые без них вообще не делаются, не знать или избегать их определенно неправильно

Так точно, либо любое изменение в объекте на стороне редактора.

alexprey alexprey

Devion, только рад за дополнение, Спасибо)

хм, а вот это интересно, не пробовал никогда такой кейс.

Devion Devion

лёш, ты же не против если я дополню? )

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

Mariya Mariya

Всем привет!
Начали работу над мебелью в домик Сырны, и первым сделали чайный столик с чайным сервизом. А так же продолжаем работу над анимациями.

Wings' might Wings' might

Всем привет)
За неделю в игру было добавлено меню настроек, переделана старая локация, добавлены новые враги и повышена производительности

alexprey alexprey

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

Dreaman Dreaman

Всем привет!
Для проекта "Mental State" разработано новое устройство, которое уже полностью функционирует внутри игрового мира. Оно носит название "Репульсивер". Совместно с очередными большими воротами это устройство образует новую головоломку...

...
Mariya Mariya

Всем привет!
На этой неделе мы научили Сырну летать!

Tartal Tartal

alexprey, кастомизации - создание внешности персонажа? Я всегда любил это, но не думаю, что это будет к месту в мясном шутере)
EfimovMax, да, есть немного)

Tartal Tartal

Jusper, точно не помню, уже как полгода точно) Я вроде в Дискорде немного обсуждал эту тему. Пока немножко попробовал движок - мне очень нравится. Ну, в конце концов, он идеально подходит под жанры, с которыми я хочу работать...

alexprey alexprey

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

Логотип проекта Unity

Дополняем игровые скрипты

Порой, работая с объектами у нас возникает справедливое желание дополнить игровой класс какой-то служебной информацией, нужной для редактора. Однако нельзя нагружать сами игровые классы - мы же не хотим, чтобы это все пошло в игровой билд, верно?

Потому ниже я приведу вам несколько примеров, как это можно сделать.

Из редактора

Избежать всех этих неприятностей помогут самые обычные, нативные хеш-таблицы, реализуемые через классы Hashtable и Dictionary. Единственный минус от их использования только один - у нас нет адекватной стандартной возможности проконтролировать, существует/удален из игры какой-то объект, в результате чего иногда хеш-таблицам свойственно "распухать" при работе с большим количеством данных.

Через директиву

Так же есть другие способы повлиять на содержимое игровых объектов.
Тут мы можем вспомнить директиву #if UNITY_EDITOR, Используется она прямо в игровых скриптах, в формате

#if UNITY_EDITOR
// Ваш код
#else
//Код в другом случае
#endif

Где директива #else не является обязательной. С помощью этих директив вы можете встроить в игровые классы любые данные, начиная от алгоритмов, заканчивая полями - на этапе формирования билда, все они будут отсечены.

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

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

Совет от автора

Так же расскажу вам о той практике, которую применяю самолично.
Смысл её состоим в том, что для объектов вы создаете обычное несереализуемое поле, аля

public object editorTag;

В которое закидываете любую временную информацию по своему усмотрению. Это удобно, практично, и не вызывает лишних вопросов.

Здесь еще никто не оставил комментарий