Комментарии 36
Привет. А в итоге, что за игра-то? Понял, что это 2d что-то, но не более.
Хабр не любит пиара — и конкретизация нашей игры пост богаче не сделает (:
Я думаю, ссылка в комментарии, да еще и по просьбе двух людей (а я тоже хочу) — это святое! За такое Хабр не обидется.
Ссылку, ссылку!
Спасибо за пост, выцепил для себя пару полезных советов! Сам сейчас нахожусь в ситуации, когда программировать вроде как умею, а опыта в Enterprise-разработке нет, и тоже потихоньку пилю свою игру на Юнити.
P.S. Присоединяюсь к требующим ссылку на игру))
P.S. Присоединяюсь к требующим ссылку на игру))
Наверное, мы уже достаточно глубоко в ветке комментов и сюда никто не залезет? Наш дебютный проект — store.steampowered.com/app/375560/DungeonRift
Ну вот, а в чём проблема?)) Многие непонятно почему так боятся 'случайного пиара", что усердно добавляют в текст конструкции вроде «одна хорошая компания», «магазин на букву А», «известная игра про футбол» и так далее. А в чём проблема назвать полностью? Что плохого в том, чтобы вольно или невольно пропиарить то, что лично ты считаешь хорошим?
Классическая ошибка. В PullRandomFromList вы зря передаёте List как ref.
Ref нужен, если вы хотите иметь возможность заставить аргумент начать показывать на другой лист. А возможность поменять лист у вас и так есть.
В первом методе можно принимать не List, а IReadOnlyList. Так вы сможете передать туда не только List, но и все, что поддерживает этот интерфейс
Все верно. А еще было бы лучше и удобнее оформить эти методы как extension, что бы вызывать таким образом: ExampleClass a = list.GetRandomFromList();
Не написали ИМХО одну важную вещь про крайнюю полезность SerializedObject, с помощью него можно реализовывать логику объекта для которого не всегда требуются GameObject'ы, например предметы инвентаря.
Спасибо, нашел несколько полезных советов для себя)
Объединяйте однотипные спрайты (а тем более отдельные спрайты одной анимации) в общую картинку
Вот это скорее вредный совет, с атласами, сделанными вручную сложнее работать (удалять, изменять и добавлять элементы). В Unity есть очень удобный SpritePacker, который за разработчика это все делает, причем обычно оптимальнее. В 2017 его еще улучшили, но я пока еще последнюю версию толком не трогал.
Умный термин — Interface segregation principle.
ISP про другое. Тут умный термин — Single responsibility principle из того же SOLID
Я за туториал вида “Делаем игрушку для хакатона за сутки с нуля”.
Очень хочется определиться с начальным уровнем аудитории. Это кто-то, понимающий хоть что-то в программировании и ему не надо будет объяснять что такое класс или условный оператор, или это человек, впервые севший за компьютер? Пока не могу однозначно решить.
Это кто-то, понимающий хоть что-то в программировании и ему не надо будет объяснять что такое класс или условный оператор
Однозначно для таких. Первых лучше отдельно хоть чуток подружить с программированием, после чего уже переходить к шагу «делаем игру» :-)
подпишусь на тутор.
особенно хотелось бы про
т.е. да, я создаю SceneController, и у всех создаваемых объектов в старте идет "пропиши себя в SceneController", а потом, если надо обратиться из перчатки левой руки в ножик правой руки, то иду в голову и, по путям, через точку, -> в ножик другой руки.
далее его можем модифицировать из других объектов (скриптов) в виде:
т.е.:
Тутор нужен, потому что «с разбегу» трудно понять где графический объект, а где его скриптовый компонент (или еще хуже, несколько атачнутых скриптов)" и как их искать без Find()-a… даже на (не суперовую) конструкцию выше — у меня ушло больше года.
особенно хотелось бы про
Избегайте GameObject.Find()
т.е. да, я создаю SceneController, и у всех создаваемых объектов в старте идет "пропиши себя в SceneController", а потом, если надо обратиться из перчатки левой руки в ножик правой руки, то иду в голову и, по путям, через точку, -> в ножик другой руки.
public class LeftHandGlove: MonoBehaviour { <-- скрипт на объекте
...
void Start()
{
GameObject _app = GameObject.Find("_app"); // DontDestroyOnLoad() persistent
MHead = _app.GetComponent(); // взяли голову из persist
MHead.LeftGlove = this.gameObject; // <-- Self Binding to ManHead
далее его можем модифицировать из других объектов (скриптов) в виде:
(...) MHead.LeftGlove.GetComponent<LeftScript>().MyState = 200;
т.е.:
(controler 3D object ->) на нем Controller script -> Totem_3D_object -> и его Script -> и в нем public переменная
Тутор нужен, потому что «с разбегу» трудно понять где графический объект, а где его скриптовый компонент (или еще хуже, несколько атачнутых скриптов)" и как их искать без Find()-a… даже на (не суперовую) конструкцию выше — у меня ушло больше года.
Простите, но:
удобнее воспользоваться встроенной утилитой утилитой SpritePacker.
Зачем хранить в памяти все текста на всех языках в рантайме? Проще подгружать 1 язык, при смене — подгружать следующий. В примерах Unity есть урок как сделать локализацию.
Это такое весьма абстрактное «проще». Имплементировать это может быть чуть-чуть сложнее, а экономия памяти будет сколько, сотня-другая килобайт? При том, сколько памяти занимают игры на Unity сами собой это абсолютно не принципиальная разница.
Но да, так, конечно, делать правильнее.
Но да, так, конечно, делать правильнее.
Всё хорошо в Unity кроме её веса. Собрал на ней пару безделушек-паззлов и забросил. Присматриваюсь к Godot.
Там нужно очень досконально смотреть настройки. Порой снятие одной галочки урезает по 30-40% от общего веса игры.
Это да, но сама среда очень громоздкая. Около гига сама Unity без никто. Godot — 40 мегабайт. Шаблоны экспорта под все платформы оптом — чуть более двухсот мегабайт. Для 2D-игрушек — самое оно.
А Вы не путаете Юнити с Анрилом или Краем? Там да, на Анриле чистый билд, без ничего, весит пару сотен Мб, на Крае и того больше. А на Юнити многие делают мобильные игры весом меньше 50 Мб. Я сейчас заканчиваю игру (не мобильную) на Юнити, весит около 400 Мб, из них 3/4 — вес JPEG-спрайтов. Где там «Около гига сама Unity без никто.», если честно, непонятно.
Мне кажется, Bookvarenko говорит про гигайбайт веса САМОГО Юнити. Среды разработки. Что, кажется, правда — у меня сейчас со всеми модулями папка с редактором (без Mono) весит 6 с небольшим гигабайт.
С другой стороны, я совершенно не понимаю, как это может иметь какое-то серьёзное значение.
А мои собранные на Юнити игры весят по 25-30 мегов на мобилки и 400 под десктоп (со всеми ресурсами).
Так что я не совсем могу понять эту претензию (:
С другой стороны, я совершенно не понимаю, как это может иметь какое-то серьёзное значение.
А мои собранные на Юнити игры весят по 25-30 мегов на мобилки и 400 под десктоп (со всеми ресурсами).
Так что я не совсем могу понять эту претензию (:
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Ошибки новичка Unity, испытанные на собственной шкуре