Unity 3D. Основы скриптинга на C#. Часть 1.
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 12:54 | Сообщение # 1 |
Problems, developer?
Сейчас нет на сайте
| Требуемые знания Юнити: начальные. Требуемые знания С#: начальные. Здравствуйте, сегодня я покажу вам основы скриптинга в движке Unity 3D на C#. Для работы нам понадобится, как понятно - сам Unity3D (я пользуюсь версией 3.1, последней на данный момент, но все должно работать и на 3.0, и на 2.x) и какой-нибудь редактор кода. Стандартный Юнайтовский редактор никуда не годится, т.к. мало возможностей - мнения типа "для обучения сойдет" бред, потому что все равно потом придется перейти на VS. Для C# приходится выбирать между Visual Studio Professional (с версией Express все немного по другому) и MonoDevelop (идет в поставке с Юнити, но возможностей меньше). Я выбираю первый. Скачиваем триалку отсюда. После того, как вы установили Visual Studio Professional, приступим к настройке. Создадим новый проект (File->New Project) в пути без кириллицы, т.к. с ней у Unity бывают иногда проблемы. В моем случае я выбрал путь D:\MyProjects\Urok1. Не ставьте никаких галочек рядом с пакетами ассетов - в этом уроке они не понадобятся. Выберем в меню Edit->Preferences. Появится вот такое окошко: Если вы правильно поставили студию, то в списке External Script Editor можно быть ее выбрать. Создадим в Project View папочку _Scripts. Там создадим наш первый скрипт на C#. Переименуем его в myFirstScript. Щелкнем два раза по нему. Через несколько секунд откроется студия со скриптом. Как видим, во вкладочке справа открыт Scripting Reference - незаменимый помощник в скриптинге. Давайте разберем скрипт по полочкам. Code using UnityEngine; using System.Collections; Здесь все просто - просто подключаем библиотеки кода для работы, а точнее для распознования кода, т.к. компилируем мы не через студию, а через Unity. Студия тут - просто редактор кода. Code public class NewBehaviourScript : MonoBehaviour Базовый класс для всех классов-скриптов Unity - MonoBehaviour, поэтому наследуем его. Внимание: название класса должно быть то же самое, что и у файла со скриптом (myFirstScript в данном случае)! Code void Start () { } // Update is called once per frame void Update () { } Собственно, внутри таких функций и пишется весь код скрипта. По умолчанию создается только две функции (Start (инициализация скрипта) и Update (выполняется в каждом кадре)). Названия таких функций уже "забиты" в движок, и компилятор Юнити их подхватывает при работе. Вот так все продуманно. Давайте заставим наш скрипт делать что-то. Как всегда, это будет "Hello, world!". Причем выводить будем аж двумя способами. Добавим в начало скрипта, объявления класса такой код: Code public string outString; // переменная для строки, которую будем выводить. Если мы сделаем ее public, то ее можно будет // прямо в Inspector'е Unity. А в функцию Start впишем: Code Debug.Log(outString); // выведем в отладочную консоль Unity нашу строку Пишем именно в Start, а не в Update, иначе код будет выполняться каждый кадр. Сохраним код (Ctrl+S) и перейдем в Unity. Создадим пустой ГО (меню GameObject->Create Empty) и перетащим на него наш скрипт. Вид Inspector изменился. Видите поле Out String? Вот, через него как раз можно редактировать переменную. Введем в него "Hello, World!". Жмем Play. Что же видим? Внизу, в консоли отобразилась наша строка - то, что хотели. Вам не кажется, что этого маловато? Тогда давайте сделаем так, чтобы наша строка показывалась на экране игры. Создадим функцию OnGUI (). В ней-то и нужно писать операции с GUI (интерфейсом пользователя). Далее, выведем через метод Label наш текст. Code void OnGUI() { GUI.Label(new Rect(10, 10, 150, 20), outString); // Rect определяет позиция и размер нашего текста } Смотрим, что получилось. Всем пока, ждите следующих частей! Готовый скрипт: Code using UnityEngine; using System.Collections;
public class myFirstScript : MonoBehaviour {
public string outString; // переменная для строки, которую будем выводить. Если мы сделаем ее public, то ее можно будет // прямо в Inspector'е Unity. // Use this for initialization void Start () { Debug.Log(outString); // выведем в отладочную консоль Unity нашу строку }
void OnGUI() { GUI.Label(new Rect(10, 10, 150, 20), outString); // Rect определяет позиция и размер нашего текста } // Update is called once per frame void Update () { } }
Сообщение отредактировал SlavyanOOs - Понедельник, 10 Января 2011, 13:09 |
|
| |
kiselev | Дата: Понедельник, 10 Января 2011, 13:00 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Code public class NewBehaviourScript : MonoBehaviour А что значит эта строка в с#?
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:04 | Сообщение # 3 |
Problems, developer?
Сейчас нет на сайте
| kiselev, ну, я же сказал, Quote (SlavyanOOs) Требуемые знания С#: начальные. Ну да ладно. public - доступен всем. class - значит, что мы сейчас описываем класс. NewBehaviourScript - название класса, нужно Quote (SlavyanOOs) Внимание: название класса должно быть то же самое, что и у файла со скриптом (myFirstScript в данном случае)! : MonoBehaviour - наследуем класс от MonoBehaviour.
|
|
| |
kiselev | Дата: Понедельник, 10 Января 2011, 13:06 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Quote kiselev, ну, я же сказал, Я знаю яву. Quote : MonoBehaviour - наследуем класс от MonoBehaviour. О, вот наследования в ява нету.
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:08 | Сообщение # 5 |
Problems, developer?
Сейчас нет на сайте
| Quote (kiselev) Quote kiselev, ну, я же сказал, Я знаю яву. Quote : MonoBehaviour - наследуем класс от MonoBehaviour. О, вот наследования в ява нету. Ну, я яву не уважаю. Поэтому уроки по шарпу.
|
|
| |
kiselev | Дата: Понедельник, 10 Января 2011, 13:09 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Ява самый быстрый язык програмирования. Кросплатформенный.
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:10 | Сообщение # 7 |
Problems, developer?
Сейчас нет на сайте
| Quote (kiselev) Ява самый быстрый язык програмирования. Кросплатформенный. Я имел ввиду Юнитовский Java Script. Насчет быстрый - он же интерпретируется.. Хотя, современным компам пофиг. Не надо обсуждать в моей теме с уроком Java.
|
|
| |
kiselev | Дата: Понедельник, 10 Января 2011, 13:11 | Сообщение # 8 |
участник
Сейчас нет на сайте
| http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_C_Sharp_%D0%B8_Java
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:17 | Сообщение # 9 |
Problems, developer?
Сейчас нет на сайте
| Кому что-то непонятно по C# - это урок по API Юнити, почитайте несколько первых уроков тут: тыц
|
|
| |
robo01 | Дата: Понедельник, 10 Января 2011, 13:18 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| kiselev, Ты ловиш разницу между Java и Java Script? мож хва оффтопить? SlavyanOOs, Спс за урок =) хоть для меня он и сложноват...
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:23 | Сообщение # 11 |
Problems, developer?
Сейчас нет на сайте
| Quote (robo01) SlavyanOOs, Спс за урок =) хоть для меня он и сложноват... Quote (robo01) Кому что-то непонятно по C# - это урок по API Юнити, почитайте несколько первых уроков тут: тыц Дальше расскажу, как настроить экспресс-студию для Юнити.
|
|
| |
robo01 | Дата: Понедельник, 10 Января 2011, 13:26 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| Quote (SlavyanOOs) Кому что-то непонятно по C# - это урок по API Юнити, почитайте несколько первых уроков тут: тыц Дело в том что я на ява скрипте там прогаю зачем мне C# учить то?
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:32 | Сообщение # 13 |
Problems, developer?
Сейчас нет на сайте
| Quote (robo01) Дело в том что я на ява скрипте там прогаю cool зачем мне C# учить то? C# более гибкий. Да и большинство русского форума пишет на нем. У нас в стране его признали.
|
|
| |
robo01 | Дата: Понедельник, 10 Января 2011, 13:35 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| Quote (SlavyanOOs) C# более гибкий. Да и большинство русского форума пишет на нем. У нас в стране его признали. Да я это знаю))) как по мне он самый современный яп Но!! мне ява скрипт удобней в юнити, и мне его вполне хватит.
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:41 | Сообщение # 15 |
Problems, developer?
Сейчас нет на сайте
| Quote (robo01) Да я это знаю))) как по мне он самый современный яп smile Но!! мне ява скрипт удобней в юнити, и мне его вполне хватит. Да, он проще. Я сам раньше писал на JS, в марте. Перешел на C#. Скорее всего сам перейдешь. Ну, а новичкам советую сразу брать C#.
|
|
| |
Lord_F | Дата: Понедельник, 10 Января 2011, 13:49 | Сообщение # 16 |
Любопытный Игродел
Сейчас нет на сайте
| Quote (kiselev) О, вот наследования в ява нету. Наследование в яве есть! Такого нет, но есть же extends (или я чего-то забыл?)
[quote]Ничто не истина, всё дозволено[/quote]
|
|
| |
Noth1nG | Дата: Понедельник, 10 Января 2011, 13:52 | Сообщение # 17 |
был не раз
Сейчас нет на сайте
| Спасибо за урок. Часть 2 будет надеюсь?
Учу unity3d.
|
|
| |
SlavyanOOs | Дата: Понедельник, 10 Января 2011, 13:54 | Сообщение # 18 |
Problems, developer?
Сейчас нет на сайте
| Noth1nG, надеюсь.
|
|
| |
denisik10 | Дата: Воскресенье, 28 Августа 2011, 08:23 | Сообщение # 19 |
участник
Сейчас нет на сайте
| а есть урок о OnGUI и о bool ?
я родился 25.08.1993 ,почему после ника стоит 10 ? А просто , у меня просто не было пк , у меня когда появился тел , я зарегался , мне было около 13 лет , а почем "10" ? Просто , по правилам округление математики ...
|
|
| |
SlavyanOOs | Дата: Воскресенье, 28 Августа 2011, 09:35 | Сообщение # 20 |
Problems, developer?
Сейчас нет на сайте
| А что с ним-то сложного? Scripting Reference.
|
|
| |
|