Как новичку учить C# и Unity3d

Как новичку учить C# и Unity3d

Сообщение orkons 16 июл 2018, 14:06

Два с половиной месяца изучая Unity и C# я сформировал для себя принципы эффективного обучения. Описано в формате советов (так удобней читать), но руководствоваться ими или нет, решайте сами. Это мое мнение, как быстро учиться, а не как сделать супер-игру. Итак, мой подход к изучению C# и Unity3d, вы можете описать свой.

Изображение

Не зацикливайтесь, если что-то не получается

Бывает, что в Unity вы не можете реализовать то, что хотите, например, не знаете, как это делать, или что-то не работает и непонятно почему. Не стоит тратить на это весь день, лучше это за время изучите 10 не менее важных, но других аспектов движка. Просто возьмите другой видеоурок, и прорабатывайте другую тему.

Например, я как-то потратил полдня в поисках, как отредактировать Read-Only анимацию. А через пару недель в случайном ролике увидел, как это делается. При наличии урока решение проблемы занимает 2 минуты, без него — несколько часов.

Это иллюзия, что пока вы несколько часов тратите на это, вы изучаете редактор Unity. КПД такого «изучения» крайне низко по сравнению с просмотром конкретных видеоуроков (особенно от Stream). Боритесь с этой иллюзией, и не зацикливайтесь, вас никто не заставляет реализовывать что-либо сейчас — ваша основная задача научиться вообще, а не сделать игру к какому-то сроку.

Главная задача научиться, а не сделать игру

Возможно, кому-то это покажется нелогичным, но пока вы учитесь ваша главная задача научиться, а не сделать игру! Разница в том, что при подходе «главное сделать игру» вы делаете то, что мало полезно для обучения и занимает много времени, но необходимо для создания игры. Например, несколько дней делаете 150 разных визуализаций скиллов для нескольких классов вашей RPG, но если каждый раз с каждым новым скиллом вы применяете одни и те же знания, то развития почти нет. Это просто рутина.

Есть и другой, более страшный случай, допустим, вы 2 дня кодили что-то объемное, а потом узнали, что это можно сделать в 10 раз проще, но вам мешало незнание возможностей языка C#. А вы как лесоруб, у которого нет времени заточить топор, торопитесь и рубите тупым топором. Поэтому точите топор, и помните во главе угла обучение (узнавание новых функций Unity3d и C#), а не создание игры.

Ваши идеи не украдут

Многие новички считают, что они придумали гениальную идею, за которой позарятся профессиональные акулы игростроя. Но не стоит бояться быть «обворованным», как правило, идеи новичков такие, что у профессионалов они вызывают лишь фейспалм.

Проблема тут в том, что вы можете год втихую разрабатывать игру, а после релиза понять, что она никому не нужна. Так будет в 95% случаев, но вы могли бы сэкономить время, если бы просто описали идею игры на форуме, и попросили советов более опытных разработчиков. Есть шанс, что они вам объяснят, почему на это не стоит тратить времени, а также подскажут, как сделать лучше. В итоге вы повысите шансы на успех игры, и сэкономите время.

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

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

Используйте готовые модели, карты, текстуры и т.п. чтобы ускорить релиз прототипа

Если вы хотите сделать прототип, чтобы протестировать зайдет ли ваша идея игры, то это подразумевает уже меньше обучения, и больше рутинной работы. В таком случае используйте все готовое: ассеты, текстуры, модели, карту, музыку и прочее, чтобы избавиться от тонны рутинной работы, и ускорить в разы релиз прототипа. Не волнуйтесь, обучение не пострадает, вы сэкономите много времени, которое сможете потом потратить на обучение, просто сейчас вы получите релиз за 3 месяца, а не за 12 или 18. Но помните, быстрота создания прототипа должна быть за счет умения находить готовые ресурсы, а не за счет повышения пропорций рутинной работы в ущерб обучению новому.

Зачем нужен релиз быстрее? Чем быстрее у вас будут выходить релизы прототипов, тем больше вы протестируете идей, тем больше у вас будет опыта за счет обратной связи. После сможете приступить к следующей игре, если эта не зайдет (а она не зайдет с вероятностью 95%).

Например, не разрабатывайте свою систему смены дня и ночи, возьмите уже готовый ассет. А сэкономленное время потратьте на обучение и реализацию того, чего у вас нет в готовом виде (при наличии хорошего видеоурока или книги по этому, не забывайте про пункт "не зацикливаться", чтобы не тратить время с низким КПД). Конечно, готовые ресурсы с авторскими правами нельзя использовать в коммерции, но вероятность коммерческого успеха первой игры новичка низка, поэтому я бы сразу делал ставку на свободное распространение с целью получить обратную связь. А если ваша игра получит какой-то спрос, тогда и будет смысл заменить чужие ассеты на сделанные самостоятельно. Поясню - вы не потеряете ничего в плане обучения. Просто вы сейчас экономите время и не делаете то, что уже есть в готовом виде, а когда (и если!) вам понадобится научиться этому, тогда и приступите к его изучению.

Изучите C# - это база

Изображение

Чем больше вы понимаете в C#, тем больше вы можете сделать. Пропорции изучения Unity и C# должны быть где-то 50 на 50. Если книги по C# для вас пока слишком трудны, то можете начать с видеоуроков, например, с видеокурса C# для маленьких и тупых. После него вы уже не будете испытывать такой страх перед книгами, и будете достаточно в теме, чтобы их читать.

Лучшая книга по C# на данный момент это Язык программирования C# 5.0 и платформа .NET 4.5 (Эндрю Троелсен), уже вышла новая версия книги, но в интернете я ее не нашел, но и старая еще актуальна. По Unity3d рекомендую книгу Алон Торн - Искусство создания сценариев в Unity.

Если при просмотре видеоурока по C# вам что-то непонятно, то просто найдите видео на эту тему от другого автора. Комбинируйте видеоуроки по Unity и C# с чтением книг и статей в удобном для вас порядке и чередовании, но помните, книга по C# это база, и основные ее главы нужно знать обязательно, если хотите не «с трудом делать легкие вещи», а «легко делать трудные вещи».

Как читать книги по программированию

Основная проблема это въехать в терминологию, чтобы понять, что написано. Даже если вы уже получили определение термина, то из-за их обилия и из-за того, что эти понятия для вас пока весьма абстрактны, предложения приходится перечитывать помногу раз.

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

Объясняйте понятое. Если вы поняли какой-то момент, то объясните его (можно вслух на запись, как-будто делаете видеоурок). Так вы лучше запомните. И сработает принцип из анекдота про учителя: «Я ученикам сто раз объяснил, уже сам понял, а они все не понимают».

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

Объясняйте каждый пример кода из книги. В книге встречаются иллюстрирующие куски кода. Объясняйте, что делает каждая «команда» (оператор) и ключевое слово, причем в правильных терминах, чтобы привыкнуть. Например, это может выглядеть так: «Создаем экземпляр (объект) класса MyClass с именем Vas9, присваиваем ему значение с помощью конструктора, в который в качестве параметра передаем переменную 25», это все вы поняли из этой строчки:

MyClass Vas9 = new MyClass (25);

Потом идете туда, где описан класс MyClass, и смотрите, что там происходит, и объясняете это, например, так: «Используется перегруженный конструктор класса, принимающий в параметры одну переменную типа int, и устанавливающий ее в приватное поле age. Конструктор по умолчанию не используется». Пример кода этого конструктора приводить уже не буду.

Объясняете всю логику программы, рассказываете, почему что-то делается и что именно делается. Говорите так, как будто пытаетесь объяснить новичку. Старайтесь формулировать максимально точно в терминах, но дублируйте их и объяснением своими словами с аналогиями, чтобы термины лучше осели в голове.

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

Изучайте английский

Если вы решили изучить C# и Unity, то у вас появилась отличная возможность выучить и английский язык.

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

Переводите слова из Unity и C#. Смотрите, что значат в переводчике настройки, меню и прочий интерфейс Unity, а также ключевые слова C#. Это позволит понять, что делает конкретная настройка, и выучить слова.

Нажимайте несколько раз на кнопку озвучивания в переводчике, чтобы запомнить, как слово воспринимается на слух, а лучше даже повторить за роботом, стараясь правильно произнести. Нехорошо знать значение слова «options», но называть это «оптионс», а не «опшенс».

Говорят, лучший способ выучить язык — это поехать в соответствующую страну и там общаться на нем. Это работает за счет постоянного и всестороннего взаимодействия со словами на другом языке. Вы можете сделать нечто похожее, и взаимодействовать с английскими словами называя ими свои объекты. С одной стороны это замедляет изучение C# и Unity, так как приходится переключаться на переводчик, прослушивать звучание слов, но со временем вы выучите больше слов, что наоборот ускорит развитие.

Релизьте свои скрипты и префабы

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

Сделайте видеоурок, как установить вашу разработку, а также отдельно без воды, пространных рассуждений и отвлеченных тем объясните, как работает код. Постарайтесь делать максимально кратко, точно по терминам, но понятно для других новичков. Объясняя другим — сами лучше поймете. Только не делайте плохие видеоуроки.

Яндексите (гуглите)

Если что-то не получается, то не ковыряйтесь больше нескольких минут, нередко в поисковике можно найти готовый ответ на ваш вопрос. Бывает обидно провозиться минут 20-30, думая, что в поисковике нет ответа, а потом загуглить и почти сразу найти ответ. Если в поисковике ответа нет, тогда обратитесь на форумы gcup и unity3d, только не забудьте сначала пройтись местным поиском по форуму.

Изучайте горячие клавиши и Visual Studio

Это из разряда «точить топор лесоруба», очень экономит время. Вот неплохое видео «15 советов, ускоряющих работу в Unity», но ищите и другие. В Visual Studio узнайте, как делать рефакторинг (например, переименование одной переменной сразу во всех скриптах) и прочее. Современные среды разработки имеют большой функционал, поэтому если вам чего-то не хватает, то, скорее всего, это уже реализовано, надо только узнать, как им пользоваться.

Почему изучать Unity и C# полезно?

— Это поможет выучить английский язык.

— Вы сможете делать не только 3D-игры, но и немного научитесь работать с 3D-редактором. Конечно, Unity3d не для того, чтобы редактировать 3D (внезапно!), но, например, сделать какой-нибудь лесок с моделькой горящей машины, и в кустах модельку медведя, вы сможете без проблем из скачанных ассетов. Это может понадобиться для видеомонтажа, когда нужна соответствующая сцена, ведь и мультики на Unity рисуют. Сделаете, к примеру, и макет города, даже физика есть в Unity. Но все-таки это движок для создания игр, поэтому все вышеописанное доступно на примитивном уровне по сравнению со специализированными программами.

— Язык C# полезен, как таковой, он используется не только для Unity. Вы сможете писать программы на C# под Windows.

— Unity позволит вам без особого труда делать игры и просто софт под мобильные телефоны на Android. Достаточно просто перекомпилировать проект под Android, также можно скомпилировать проект под работу в браузере (WebGL).

— В данный момент Unity это самый популярный игровой движок среди инди-разработчиков, а C# популярный язык программирования, который многим не раз пригодится за их долгую жизнь. Если не знаете с чего начать, то тут я для себя собирал все интересные видеоуроки, статьи и прочие полезные ссылки по C# и Unity.

Такое мое мнение, не претендую на истину, но я делаю так, как описал. Высказывание своего мнения приветствуется.
orkons
UNец
 
Сообщения: 15
Зарегистрирован: 14 май 2018, 11:09

Вернуться в Tips & Tricks

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1