Требуемые знания Юнити: начальные. Требуемые знания С#: начальные. Здравствуйте, сегодня я покажу вам основы скриптинга в движке 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 () {
} }
Добавлено (10.01.2011, 13:17) --------------------------------------------- Кому что-то непонятно по C# - это урок по API Юнити, почитайте несколько первых уроков тут: тыц
Сообщение отредактировал Zer0n - Пн, 10 Янв 2011, 13:09