Как изучить c для unity

от admin

Coding in C# in Unity for beginners

You want to start learning to code in Unity so you can get going on your first game, but you don’t know where to begin. We get the struggle. Here’s a breakdown of the scripting elements in Unity and some learning material that you can use to go through more advanced projects like «Space Shooter». This should get you covered in the following areas: the very basics of coding, like variables, functions and classes, and how to use them.

Scripting tells our GameObjects how to behave; it’s the scripts and components attached to the GameObjects, and how they interact with each other, that creates your gameplay. Now, scripting in Unity is different from pure programming. If you’ve done some pure programming, e.g. you created a running app, you should realize that in Unity you don’t need to create the code that runs the application, because Unity does it for you. Instead, you focus on the gameplay in your scripts.

Unity runs in a big loop. It reads all of the data that’s in a game scene. For example, it reads through the lights, the meshes, what the behaviors are, and it processes all of this information for you.

If you think about television, where, for example in North America, you have 29.5 frame/sec, Unity needs to do the same thing. It’s running single discrete frames, one after another. You direct Unity with the instructions that you write in your scripts, and Unity executes them frame after frame as fast as it can.

Achieving a high frame rate means not only your game will look more fluid, but your scripts will also be executed more often, making controls more responsive.

A script must be attached to a GameObject in the scene in order to be called by Unity. Scripts are written in a special language that Unity can understand. And, it’s through this language that we can talk to the engine and give it our instructions.

The language that’s used in Unity is called C# (pronounced C-sharp). All the languages that Unity operates with are object-oriented scripting languages. Like any language, scripting languages have syntax, or parts of speech, and the primary parts are called variables, functions, and classes.

If you’re using a version of Unity until 2017.3, you’ll notice that it has a text editor called MonoDevelop: it can help us complete our code, it’ll let us know if we’re writing a wrong piece of code, and allows us to take shortcuts. Starting with 2018.1, you can also use Visual Studio for Unity Community, or other text editors such as Visual Studio, Notepad, or Sublime text.

Here’s a script with some sample code in it (based on the Coding in Unity for the Absolute Beginner tutorial):

As you can see, there are variables, functions, and classes.

Variables hold values and references to objects (you can see objects as “bigger” variables). They’re like a box that holds something for us to use. Variables start with a lowercase letter.

Functions are collections of code that compare and manipulate these variables. Functions start with an uppercase letter. We organise code in functions so that they can be easily reused multiple times in different parts of the program.

Classes are a way to structure code to wrap collections of variables and functions together to create a template that defines the properties of an object.

Scripting is primarily comparing these objects and their current states and values. It’s based on logic determining an outcome or resolution.

In Unity, the scripts start by laying out the tools that you need at the top, and this is usually by declaring variables. You can see the declared variables here with the visibility keyword “public” or «private» at the front, followed by a type, and a name.

variables

When we’re declaring your variables there are several visibility types, but the two most important ones are public and private.

If you create a script with the above text in your code editor and then come back to Unity and assign the script to a GameObject, you’ll see that you can access and see the light variable declared as public in the Inspector, but you can’t see the private one. And that’s because what’s defined as “private” can only be accessed within this particular script, within this particular class.

If you make this public, then it’s accessible to other scripts and other classes, and can be changed in the Inspector from the Unity editor. So, that means other people can access it and change its value.

There are many reasons to choose between private or public. Private variables allow your code to be cleaner, since you know that the value of those variables can be changed only inside that class. This makes debugging and maintaining the code easier.

If you choose “public” , and you experience an issue, you need to look inside your whole codebase in order to track the source because any other object has access to that variable. However, if you want objects to communicate between themselves you need some variables (or functions) to be public.

Another important aspect of variables is the type. A type defines what kind of value is the variable holding in memory, e.g. it can be a number, text, or more complex types, like the ones in the image below: Transform, Light and Demo Script in the image below are in fact references to Components. Unity needs to know what type of object it is so that it knows how to handle it.

Variable types

Another important thing about variables is the name. The main thing that you need to remember about naming variables is that it can’t start with a number, and it can’t contain spaces. Therefore, there’s a style of writing the names. In C#, the naming convention is camelCase: you start with a lowercase letter and add words, without spaces, starting with a capital letter, e.g. «myLight».

When Unity compiles the script, it makes public variables visible in the editor. See the image below from the inspector.

demo script

Scripts manipulate the variables by using functions. There are a number of functions that run automatically inside Unity. See below:

functions

Awake is called only once when the GameObject with that component is instantiated. If a GameObject is inactive, then it will not be called until it is made active. However, Awake is called even if the GameObject is active but the component is not enabled (with the little checkbox next to its name). You can use Awake to initialize all the variables that you need to assign a value to.

Start – like Awake, Start will be called if a GameObject is active, but only if the component is enabled. For more information on the differences with Awake, see this video.

Update is called once per frame. This is where you put code to define the logic that runs continuously, like animations, AI, and other parts of the game that have to be constantly updated.

FixedUpdate is when you want to do physics work.

As you can see, there’s Fixed Update and Update and in our Scripting tutorials section, you can learn how to effect changes every frame with the Update and FixedUpdate functions, and their differences.

LateUpdate is a function that’s similar to Update, but LateUpdate is called at the end of the frame. Unity will look at all of the game objects, find all of the Updates, and call the LateUpdates. This is good for things like the camera. Let’s say you want to move a character in your game. And then he’s bumped into by another character and ends up in a different position. If we move the camera at the same time as the character, there would be a jiggle, and the camera wouldn’t be where it needs to be. So, basically, it’s a second loop that comes in very handy.

When writing a function, remember that functions start with the returned type of the function at the beginning, followed by the name of the function, and then the parameters in the parentheses (if any). Function names start with a capital letter and the body of the function goes between the curly brackets. Here’s an example on how to write a function:

writing function

How do we call this function?

call function

Functions can do calculations and then return a value. You can ask a function to do something, process the information, then return an answer. If you use the type «void», then they are not returning anything.

Classes are collections of these variables and functions. For example, this script is a class:

Script class

Bear in mind that the class name must match the file name of the C# script for it to work. And then to be attached to a GameObject, it has to derive from another class called MonoBehaviour which is automatically put there for you when you first create a script. Classes can also be public or private.

In Unity, if you create a custom class, like in the example below, you have to ask it to serialize it. This means that it will be converted into simple data that Unity can look at in the inspector. When you do that, it’ll see that you have the class will appear in the inspector.

serial class

Variables, functions, and classes are just the basics of starting with coding in Unity. Check out the Learn section, you can find a bunch of useful scripting tutorials that will help you go learn about programming from scratch, then progress to create detailed code for your projects.

Как выучить C#, и создавать игры на Unity.

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

Для начала важно изучить основы программирования. Написать простые программки. То есть разобраться с тем что есть в каждом языке. Первый шаг есть самый трудный. Необходимо немного поменять свое мышление. Научиться новому навыку. В этом деле самое главное регулярность и самостоятельная практика. Это очень и очень важно. Регулярность заключается в каждодневных занятиях, а самостоятельная практика, в написании своих программ, без учебника или видео.
Важно понимать, что неплохим вариантом может быть сначала изучить другой язык программирования (JS, Python), если есть возможность, и так будет проще, и потом перейти к C#. На первом шаге вам самое главное изучить основы и набить руку в программировании.

Читать:
Как пропинговать несколько ip сразу

Где изучать основы?

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

  1. Многим очень просто изучать по видео. Для таких я рекомендую Brackeys. Автор невероятно доступно все подает и объясняет. Плюс, у него очень много классных видео по Unity.

2. Интерактивные площадки в виде Codecademy

3. Специальные курсы в онлайне, с заданиями. Например TeamTreeHouse. Очень люблю этих ребят.

4. Если вы хотите хорошую базу, попробуйте начать C++ с помощью этой книги от Game Institue. Рекомендуется если вы раньше хоть немного программировали.

Программирование на C# в Unity — бесплатные видеоуроки для детей и подростков

Обложка: Программирование на C# в Unity — бесплатные видеоуроки для детей и подростков

Unity (Юнити) — это одна из лучших платформ разработки 2D и 3D компьютерных игр. Unity позволяет создавать приложения, которые работают на более чем 25 платформах. С её помощью можно создавать программы и игры для компьютеров, консолей, мобильных и других устройств.

На этой платформе разработано огромное количество игр и приложений, которые стали настоящими хитами в своей отрасли, например, Pokémon Go, Kerbal Space Program и др. Для программирования на Unity используется язык C# (Си Шарп). Он не вызывает особых трудностей даже у неопытных пользователей, поэтому работать в Юнити может практически каждый.

Мы подготовили серию видеоуроков по программированию на C# в Unity. Они разработаны специально для детей и подростков в возрасте от 10 лет и подходят тем, кто делает первые шаги в данной сфере. С помощью этого видеокурса вы познакомитесь библиотеками Си Шарп и научитесь писать скрипты для своих игр.

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

Видеоурок 1. Структура C#

В первом видеоуроке рассказываем, где скачать и как правильно установить Visual Studio. Это программа, которая позволяет писать код на языке C#. Также в видеоуроке мы познакомимся со структурой и визуалом Си Шарп. Все эти моменты подробно разбираются, поэтому у вас не возникнет никаких проблем.

Видеоурок 2. Добавление кнопок в Юнити. Выведение текста на C#

Во втором видеоуроке мы начнём изучать программирование UI в Юнити. Данная платформа имеет ряд объектов UI, которые упрощают работу в программе. В конце видеоурока мы закрепим пройденный материал: добавим кнопки и пропишем скрипт, который позволит вывести текст на монитор.

Видеоурок 3. Массивы в Юнити. List на C#

На третьем уроке мы будем изучать массив Си Шарп, а также рассмотрим, чем он отличается от переменной и от List. Также мы рассмотрим, как правильно объявлять массив и List на C#.

Видеоурок 4. Оператор if в C#

На четвёртом уроке мы познакомим вас с операторами в C#. Особое внимание будет уделено оператору if, который применяется, если необходимо выполнить действие в определённом случае. Во время урока мы разберём данный оператор, а также напишем ряд скриптов с ним.

Видеоурок 5. Компоненты

На пятом уроке мы начнём изучать компоненты Unity и рассмотрим, как их правильно добавлять на объект. Для закрепления материала мы запишем несколько скриптов.

Видеоурок 6. Циклы в Юнити. Цикл for в C#

В шестом видеоуроке мы рассмотрим и изучим циклы в Unity. Особое внимание мы уделим циклу for. Для закрепления материала мы напишем несколько программ.

Видеоурок 7. Coroutine в Unity

Во время седьмого урока мы расскажем, что такое Корутина и для чего она нужна. Также мы научимся писать программы, которые будут запускать и останавливать Coroutine.

Видеоурок 8. Как добавлять музыку в Unity

На восьмом уроке мы детально изучим компонент Audio Source в Unity, который позволяет добавлять музыку. Для закрепления материала мы добавим кнопки и для каждой из них напишем скрипт, чтобы при нажатии воспроизводилась музыка.

Видеоурок 9. Перемещение мышью 3D-объекта

Мы настроим сцену и движение объекта, а затем рассмотрим два метода перемещения трехмерных объектов с помощью мыши.

Видеоурок 10. Методы Rigidbody

В десятом видео мы изучим три метода Rigidbody: AddForce, MovePosition и MoveRotation. Напишем скрипты и научимся применять их в наших играх.

Благодаря этим видеоурокам обучение программированию детей станет еще увлекательнее. Учитесь писать скрипты, создавайте новые игры и делитесь ими с другими пользователями. Unity станет отличным напарником на вашем пути разработчика игр.

Как С# разработчику перейти на Unity

Unity3D — один из самых популярных игровых движков. В последние годы всё больше отличных игр выходят благодаря тому, что Unity прост в использовании и предлагает разработчикам много готовых решений. Алексей Науменко, .NET Developer в Plarium Kharkiv, рассказал с чего разработчику начать изучение Unity.

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

Я учился в ХАИ по специальности «Телекоммуникации». У нас был преподаватель, который конструировал беспилотники. Благодаря ему уже на 4-м курсе я начал писать простой код на С для микроконтроллеров, которые управляют передачей данных с земли на БПЛА. Тогда я решил, что нужно выучить какой-то актуальный язык программирования, чтобы писать на нём постоянно, а не только для решения узких задач.

Выбирал я между С# и Java: читал книги по этим языкам, но потом просто открыл Visual Studio и Java IDE и сделал выбор в пользу первого по «обертке». Не самый правильный способ анализа преимуществ и недостатков, но о выборе я не жалею.

Почему пошел в геймдев и выбрал Unity

В 5–7 классах мы с другом пытались сделать игру. И хотя получилась ерунда, романтика процесса осталась со мной. К тому же я люблю играть, особенно в древние RPG. После университета я работал в нескольких продуктовых компаниях: год занимался веб-программированием, потом 4 года разрабатывал ПО для call-центров. Но меня всё время преследовала идея попробовать себя в разработке игр. Так что в свободное от работы время я стал думать, какой движок использовать для будущей игры.

Многие разработчики используют Unity и Unreal Engine, но я хотел изучить все варианты. Поэтому я стал разбираться, на чем написаны популярные проекты. Оказалось, что это либо самописные движки, как, например, у Naughty Dog, либо движки, о которых очень мало информации в интернете — чтобы работать с ними, нужно, скорее всего, некоторое время работать в индустрии и знать хотя бы общие принципы построения игровых движков.

Я вернулся к выбору между Unity и Unreal Engine. И так как на тот момент я уже 4 года программировал на .NET, выбор был прост: в Unity есть C#, а в Unreal Engine — нет. Еще один плюс Unity: я погуглил некоторые интересные мне вопросы и почти на все из них нашел попытки ответить. Пусть не всегда профессиональные, но информация была, и было с кем ее обсудить.

У Unity есть аналог StackOverflow — Unity Answers. Там очень просто найти ответы на конкретные вопросы на начальном этапе, поэтому порог входа очень низкий, особенно если человек понимает хотя бы общие принципы программирования.

С чего начать обучение

Я изучал уже решенные задачи, похожие на те, что интересовали меня. Однажды я искал конкретное решение, но не нашел его в Asset Store. Поэтому начал мониторить форумы и наткнулся на парня, который делал именно то, что мне было нужно, но в Store его решение не пропустили по каким-то требованиям. Я написал ему сообщение и предложил купить его наработку. Он очень обрадовался возможности подзаработать — это был румынский десятиклассник. Чуть ли не лучшее мое вложение в изучение движка: 10$ плюс столько же за Swift-платеж.

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

Всегда лучше ориентироваться на какой-то пример. Я распотрошил покупку: там было много наворочено, но я переделал это решение под свои нужды. Пока разбирал этот пример, многие вопросы начального уровня отпали. Так начал понимать основные принципы работы с Unity и продолжил разбираться с возможностями движка.

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

Нет смысла изучать Unity просто так — стоит начинать с решения конкретных проектных задач. Лучше сразу определиться: «Я хочу сделать Pac-Man». Начинаешь думать, что для этого понадобится: например, нужно реализовать управление персонажем. Желтое существо ест белые точки. Существо должно понимать, что наткнулось на съедобный объект — значит, нужно начать с определения соприкосновения съедобной точки с Пакменом. Тогда появляется конкретная проблема и необходимость искать пути ее решения — а это, по-моему, и есть лучший способ изучения технологии.

Переход с .NET на Unity на практике

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

Иногда мы собеседуем Senior или Middle+ .NET программистов, которые не знакомы с Unity вообще. При этом человек не переходит на позицию Junior, потому что в Plarium, да и в работе с движком, нет понятия Unity Junior. Если с .NET всё хорошо, освоить движок будет очень просто.

Что почитать

Кроме Unity Answers есть еще UnifyWiki. Можно декомпилировать код и посмотреть результат (он не обфусцирован).

На старте очень пригодились форумы (answers.unity3d.com и forum.unity3d.com). Также я читал книгу Game Engine Architecture Джейсона Грегори. Автор в ней не говорит конкретно о Unity, но подробно рассматривает составные части и особенности игровых движков в целом. Он в деталях описывает, из чего состоит движок, какая математика нужна, как устроен рендеринг. Эта книга расширяет представление о Unity: я начал понимать, что в этом движке есть или должно быть, что с него спрашивать. Единственная трудность — для прочтения этой книги нужно быть очень мотивированным: она не нудная, но достаточно объемная.

Преимущества работы с Unity

Большие компании любят Unity за кроссплатформенность. Если ты что-то написал, оно билдится и под iOS, и под Android — пусть и с надстройками, но зато сразу работает без особых плясок. Конечно, если это не касается платежки 🙂

В нашем случае преимущество также в том, что Plarium — официальный партнер Unity с поддержкой уровня Enterprise Support. Нам не только быстро отвечают на запросы, но и предоставляют больше открытого кода, и мы можем сами что-то вскрыть и допилить.

Надеюсь, информация будет полезна тем, кто планирует работать с Unity. Успехов!

Похожие статьи