Jump to content

Мой подход к изучению C# и Unity3d


Recommended Posts

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

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

цикл.jpg

 

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

 

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

 

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

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

главное-учиться.jpg

 

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

 

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

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

украдут-идею.jpg

 

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

 

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

 

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

 

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

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

Прототип.jpg

 

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

 

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

 

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

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

шарп.jpg

 

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

 

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

 

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

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

книги-по-программированию.jpg

 

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

 

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

 

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

 

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

 

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

MyClass Vas9 = new MyClass (25);

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

 

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

 

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

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

английский.jpg

 

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

 

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

 

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

 

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

 

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

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

prefab-unity.jpg

 

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

 

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

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

яндексить.jpg

 

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

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

горячие клавиши.png

 

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

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

unity-and-csharp.jpg

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

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

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

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

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

 

Такое мое мнение, не претендую на истину, но я делаю так, как описал.

Link to post
Share on other sites
 

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Powered by Invision Community
Поддержка Invision Community в России

×
  • Create New...