Среда, 24 Апреля 2024, 17:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Unity 3D. Основы скриптинга на C#. Часть 1.
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!". happy Причем выводить будем аж двумя способами. Добавим в начало скрипта, объявления класса такой код:
Code

      public string outString; // переменная для строки, которую будем выводить. Если мы сделаем ее public, то ее можно будет   
                     // прямо в Inspector'е Unity.

А в функцию Start впишем:
Code

         Debug.Log(outString); // выведем в отладочную консоль Unity нашу строку

Пишем именно в Start, а не в Update, иначе код будет выполняться каждый кадр.
Сохраним код (Ctrl+S) и перейдем в Unity. Создадим пустой ГО (меню GameObject->Create Empty) и перетащим на него наш скрипт. Вид Inspector изменился.

Видите поле Out String? Вот, через него как раз можно редактировать переменную. cool Введем в него "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.

О, вот наследования в ява нету.


Ну, я яву не уважаю. smile Поэтому уроки по шарпу.
kiselevДата: Понедельник, 10 Января 2011, 13:09 | Сообщение # 6
участник
Сейчас нет на сайте
Ява самый быстрый язык програмирования. Кросплатформенный.
SlavyanOOsДата: Понедельник, 10 Января 2011, 13:10 | Сообщение # 7
Problems, developer?
Сейчас нет на сайте
Quote (kiselev)
Ява самый быстрый язык програмирования. Кросплатформенный.

Я имел ввиду Юнитовский Java Script. Насчет быстрый - он же интерпретируется.. Хотя, современным компам пофиг. Не надо обсуждать в моей теме с уроком Java. smile
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 Юнити, почитайте несколько первых уроков тут:
тыц

happy
Дальше расскажу, как настроить экспресс-студию для Юнити.
robo01Дата: Понедельник, 10 Января 2011, 13:26 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Quote (SlavyanOOs)
Кому что-то непонятно по C# - это урок по API Юнити, почитайте несколько первых уроков тут:
тыц

Дело в том что я на ява скрипте там прогаю cool зачем мне C# учить то?
SlavyanOOsДата: Понедельник, 10 Января 2011, 13:32 | Сообщение # 13
Problems, developer?
Сейчас нет на сайте
Quote (robo01)
Дело в том что я на ява скрипте там прогаю cool зачем мне C# учить то?

C# более гибкий. Да и большинство русского форума пишет на нем. У нас в стране его признали.
robo01Дата: Понедельник, 10 Января 2011, 13:35 | Сообщение # 14
почетный гость
Сейчас нет на сайте
Quote (SlavyanOOs)
C# более гибкий. Да и большинство русского форума пишет на нем. У нас в стране его признали.

Да я это знаю))) как по мне он самый современный яп smile
Но!! мне ява скрипт удобней в юнити, и мне его вполне хватит.
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, надеюсь. happy
denisik10Дата: Воскресенье, 28 Августа 2011, 08:23 | Сообщение # 19
участник
Сейчас нет на сайте
а есть урок о OnGUI и о bool ?

я родился 25.08.1993 ,почему после ника стоит 10 ? А просто , у меня просто не было пк , у меня когда появился тел , я зарегался , мне было около 13 лет , а почем "10" ? Просто , по правилам округление математики ...
SlavyanOOsДата: Воскресенье, 28 Августа 2011, 09:35 | Сообщение # 20
Problems, developer?
Сейчас нет на сайте
Quote (denisik10)
bool

А что с ним-то сложного?
Quote (denisik10)
OnGUI

Scripting Reference.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Unity 3D. Основы скриптинга на C#. Часть 1.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг