как в юнити поменять редактор скриптов
Unity — выбираем редактор javascript
Итак, мы хотим написать игрушку на Unity. Юнити предоставляет нам выбор из трех скриптовых языков — Javascript, C# и Boo.
Т.к. с Boo разбираться вообще не хотелось, то для нас стоял выбор JS vs C#. Для наших целей больше подошел именно JavaScript (на самом деле, правильнее было бы называть его UnityScript), т.к. он имеет более мягкую типизацию, да и переводить существующий у нас код из флэшового ActionScript’а было бы гораздо проще.
Но мы столкнулись с проблемой, которую вообще не ожидали обнаружить.
Список редакторов можно посмотреть в неофициальной вики.
Итак, что же я хочу от редактора?
Конечно же, я хочу умный и развитый auto-complete (intellisence).
Будем тестировать редактор на следующем коде:
Отдельно создадим тестовый класс TestClass.js:
public static var var_stat: int ;
public var var_pub: int ;
public static function TestFunc(): void <>
Теперь создадим второй класс, на котором и будем тестить auto-complete:
public var var_pub: int ;
protected var var_prot: int ;
private var var_priv: int ;
public static function StatFunc(): void <>
private function PrivFunc(): void <>
public function get var_getter(): int
public function DoTest() <
var var_int: int ;
// здесь будем тестить auto-complete
Писать код будем в месте, помеченном комментом и будем хотеть увидеть автокомплит.
ломается на геттерах
(перестает показывать
что-либо)
только текущий класс
И что же мы видим? В принципе, наилучшим выглядит UnityDevelop. Но неудобный хелп по функциям все портит. Возможно, если бы кто-то адаптировал свежий FlashDevelop под Unity — все было бы хорошо. Но никто этого не сделал (сейчас UnityDevelop построен на FD 0.9).
И ни один редактор не поддерживает Ctrl+Click.
Вывод? Не знаю… Писать на шарпах в VS?
Если у кого-то есть опыт — welcome в комменты, с удовольствием выслушаю.
UPDATE: После всего этого я плюнул и сам поспособствовал появлению Unity Develop 4 (подробности и ссылки на скачивание в этом топике).
Как поменять редактор кода в Unity по умолчанию?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как поменять имя компонента по умолчанию?
Можно ли поменять имя компонента по умолчанию? Например когда я бросаю на форму Button1, он.
как поменять тему оформления по-умолчанию?
Можно ли как-то изменить тему оформления по-умолчанию, чтобы каждый новый отчет не перекрашивать.
Как поменять браузер для справки по умолчанию
В при нажатии кнопки помощи F1 на нужном месте, открывается по умолчанию Mozila. Как сделать.
Решение
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как запустить редактор кода в masm32?
После установки дистрибутива masm32 в указанном каталоге установились разные папки и файлы.
Как в Eclipse изменить формат кода по-умолчанию?
Когда в eclipse форматируешь код т.е. в меню выбираешь Sourse/Format или нажимаешь Ctrl + Shift +.
Как добавить поле для ввода кода в unity?
Хочу создать обучалку по программированию. Как средствами Unity реализовать возможность вводить код.
Как создать приложение для чтения QR-кода на Unity
Здравствуйте. Я начал разрабатывать приложение, одна из функций которого является считывание.
Как удалить Tencent, поменять в браузере страницу по умолчанию
Не удается удалить непонятную программу китайского происхождения Tencent В интернет эксплорере.
Скриптинг в Unity: переменные, input и первый скрипт
Создание сценариев — неотъемлемая часть даже самых простых игр. Эти небольшие части кода работают сообща, чтобы делать самые разные вещи: от перемещения персонажа по экрану до отслеживания вашего инвентаря. Разработчики игр пишут сценарии в Unity на C#, мощном объектно-ориентированном языке программирования, разработанном Microsoft около 2000 года. С тех пор он стал одним из самых популярных языков программирования. Команда Unity выбрала C # в качестве основного языка программирования, потому что он хорошо документирован, прост в изучении и достаточно гибок.
В основе Unity лежит хорошо документированный API, с которым могут взаимодействовать скрипты. В этом руководстве вы создадите простую игру, начав с нескольких моделей и изучите как использовать наиболее важные части Unity API. Вы узнаете, как создавать сценарии C# в Unity:
Введение
Первое, что нужно сделать — это загрузить материалы для проекта.
Обратите внимание на окно Project и разверните папку RW. Этот проект содержит в себе набор готовых ассетов, которые вы будете использовать, чтобы вдохнуть жизнь в игру с помощью скриптов:
Разберем содержимое папки Assets:
Теперь откройте сцену Game в RW/Scenes, если она еще не открыта, и посмотрите вокруг в режиме сцены
Несколько летающих островов с ветряными мельницами, мостами и небольшой железнодорожной веткой, на которой стоит синяя вагонетка. Теперь взглянем на Иерархию:
Краткий обзор GameObjects:
Затем нажмите кнопку воспроизведения в верхней части редактора и взгляните на окно игры, чтобы увидеть, что происходит.
Единственные признаки жизни на данный момент — частицы дыма, вылетающие из вагонетки. В ближайшее время эта игра не выиграет ни одной награды за игру года, но это хорошая основа для дальнейшего развития.
Нажмите кнопку воспроизведения еще раз, чтобы остановить тестирование «игры».
Теперь, когда вы знакомы с проектом, пора приступить к написанию сценариев!
Первый скрипт
Создавать новые скрипты в Unity довольно просто. Щелкните правой кнопкой мыши папку RW/Scripts, выберите Create ►C# Script и назовите сценарий Rotate.
Хотя сценарий еще ничего не делает, вы уже можете использовать его как компонент, прикрепив его к GameObject. В этом случае скрипт Rotate будет вращать колеса всех ветряных мельниц.
Компоненты — это экземпляры скриптов, что означает, что вы можете добавить столько компонентов к любому GameObject, сколько захотите. Любые изменения, внесенные в сценарий, отразятся на всех его компонентах.
Разверните Scenery в Иерархии, чтобы раскрыть его содержимое. Откройте Windmill в редакторе префабов, щелкнув стрелку рядом с ее названием.
Выберите Wheel, который наследуется от Windmill. Теперь нажмите кнопку «Add Component» в нижней части инспектора, начните вводить «rotate», пока в списке не появится компонент Rotate, и выберите его.
Это добавит компонент Rotate к колесам всех ветряных мельниц.
Чтобы отредактировать скрипт, вам нужно открыть его в редакторе кода, например, Visual Studio. Есть несколько способов открыть скрипт, но самый простой — найти исходный файл в окне «Project» и дважды щелкнуть его. Двойной щелчок по полю Script любого компонента также работает:
Используйте любой из описанных выше методов, чтобы открыть скрипт Rotate в редакторе кода. Вот как это выглядит в Visual Studio:
Сам скрипт представляет собой единый класс, производный от MonoBehaviour, базового класса Unity, от которого должны быть унаследованы все скрипты, если их нужно использовать в качестве компонентов.
MonoBehaviour является частью пространства имен UnityEngine и реализует несколько общедоступных методов, но, что более важно, огромный список функций событий.
Функции — это другое название методов, все они являются подпрограммами. В языках ООП, таких как C#, вам следует использовать термин «метод», но Unity предпочла вместо этого использовать функцию при описании большинства своих встроенных методов.
Unity добавляет Start и Update методы по умолчанию для всех новых сценариев. На самом деле это функции событий, они вызываются, когда их запускает определенное действие. Вот несколько наиболее распространенных функций обработки событий и времени их вызова:
В ходе этого руководства вы будете использовать гораздо большую их разновидность, поскольку они являются важной частью сценариев. Вы можете проверить полный список функций событий в документации Unity.
Добавьте следующую строку внутри Update :
Эта единственная линия, которая постоянно вращается по оси Y с течением времени, уже демонстрирует некоторые возможности Unity API:
Редактор Unity использует углы Эйлера для изменения поворота GameObject — это знакомые оси X, Y и Z. На самом деле движок Unity внутренне использует кватернионы, которые состоят из значений X, Y, Z и W. Эти значения очень сложно интерпретировать и не предназначены для прямого использования.
Сохраните этот сценарий и вернитесь в редактор.
Можно заметить, что редактор не будет отвечать в течение короткого времени во время компиляции. Вы можете проверить, когда происходит эта компиляция, посмотрев в нижний правый угол редактора, там будет небольшой анимированный значок:
Если вы еще не вышли из режима редактирования префаба, сделайте это сейчас, щелкнув стрелку влево рядом с префабом Windmill в окне иерархии. Вам будет предложено сохранить или отменить. Щелкните Save.
Теперь посмотрим в сцену. Вы заметите, что колесо ветряной мельницы теперь медленно вращается, так что все идет по плану.
Переменные
Переменные — это контейнеры данных, в которых хранится информация. Это может быть как и количество жизни и денег игрока, так и ссылки на сборный объект, который появляется в сцене. Как только вы добавите их в скрипт, вы можете редактировать их значения в редакторе.
Откройте скрипт Rotate в редакторе кода и добавьте следующую строку прямо над методом Start:
Эта переменная задаст скорость и ось, по которой будет происходить вращение.
Теперь заменим эту строку:
Скорость вращения теперь передается в метод Rotate с помощью переменной, что упрощает ее изменение. Векторы могут быть умножены на переменные с одним типом значения, например, deltaTime для изменения всех включенных значений вектора сразу. Например, Vector3 со значением (X: 1, Y: 2, Z: 3), умноженное на float со значением 3, приведет к результату Vector3 со значением (X: 3, Y: 6, Z: 9).
Всегда выбирайте переменную вместо сферического числа в ваккуме, такого как 50, которые вы добавили ранее. Это позволит вам изменять и повторно использовать значения, не открывая скрипт.
Взгляните на инспектор, у компонента Rotate теперь есть поле, которое вы можете настроить:
Измените значение Y в поле Rotation Speed на 120 и выйдите из редактирования префаба, щелкнув стрелку в верхнем левом углу Иерархии, сохранив свои изменения при появлении запроса.
Теперь посмотрим в сцену. Колесо вращается как и раньше, но чуть быстрее.
Огромным преимуществом наличия переменных в редакторе является то, что вы можете изменять их в режиме воспроизведения! Выберите колесо одной из ветряной мельницы в иерархии и попробуйте изменить скорость вращения. Вы можете перемещать значение Y слева направо или изменять число напрямую.
Это приведет к тому, что колесо изменит свою скорость в реальном времени:
После выхода из режима воспроизведения все значения, которые вы установили для GameObjects в иерархии, будут сброшены. Это отличный способ поиграть со значениями и посмотреть, что работает лучше. Вы можете настроить высоту прыжка персонажа, количество здоровья вражеских игроков или даже расположение элементов пользовательского интерфейса.
Конечно, как только вы найдете нужные значения, вы можете сохранить их, чтобы они применялись каждый раз при запуске игры. Самый надежный способ сделать это — скопировать и вставить значения в компоненты и использовать префабы.
Находясь в режиме воспроизведения, измените вращение одного из колес на такое, какое, по вашему мнению, выглядит хорошо, например, на 150 по оси Y. Теперь щелкните правой кнопкой мыши на имя компонента Rotate в Инспекторе или щелкните левой кнопкой мыши шестеренку параметров в правом верхнем углу компонента и выберите Copy Component. Это скопирует компонент и его значения в буфер обмена.
Далее остановите режим воспроизведения. Вы заметите, что скорость в инспекторе вернется к своему прежнему значению. Щелкните правой кнопкой мыши на имя компонента Rotate и выберите Paste Component Values. Все значения, которые вы скопировали, теперь вставятся в компонент Rotate.
Хотя это изменило скорость вращения одной из ветряных мельниц, вы хотите применить это ко всем. Для этого выберите родительский компонент Windmill и в верхней правой части инспекторав ыберите Overrides ► Apply All, чтобы применить изменения ко всем ветреным мельницам.
Ввод игрока и создание экземпляров префабов
Игра не была бы игрой, если бы не требовала определенного участия в ней игрока. Скрипты могут получить состояние клавиатуры, мыши и любых подключенных девайсов. Первая цель — заставить вагонетку двигаться по рельсам слева направо.
Движение
Добавьте следующие переменные прямо вверху Start :
Эта переменная позволит вам указать скорость, с которой будет двигаться вагонетка.
Теперь добавьте этот метод ниже Update :
Этот фрагмент кода перемещает вагонетку, используя горизонтальный ввод игрока:
В этом случае вы можете использовать клавиши со стрелками влево и вправо, клавиши A и D или левый аналоговый джойстик в качестве входа.
Когда Unity не обнаруживает никаких входных данных, horizontalInput будет оставаться на 0 и вагонетка двигаться не будет.
Теперь, чтобы вызывать метод в каждом кадре, добавьте вызов к нему в Update :
Затем сохраните этот сценарий и вернитесь в редактор. Выберите Hay Machine в иерархии и добавьте к нему компонент Hay Machine.
Установите его Movement Speed на 14 и воспроизведите сцену. Используйте клавиши со стрелками или A и D для перемещения вагонетки слева направо. Работает!
Упс, вы можете переместить машину за пределы рельсов и даже за экран, а это нехорошо. Вам нужно будет установить некоторые границы, чтобы этого не происходило.
Снова откройте скрипт HayMachine и добавить эту переменную ниже других:
Эта переменная будет использоваться для ограничения движения по оси X. В качестве значения по умолчанию ему присваивается 22, это будет начальное значение, которое также будет заполнено в редакторе.
Теперь отредактируйте UpdateMovement оператор if-else, чтобы он использовал границу при проверках:
Вот что поменялось:
Изображение ниже более наглядно иллюстрирует происходящее:
Белые линии слева и справа обозначают границы, линия, проходящая через вагонетку, является ее центром. Перемещение вагонетки в заданном направлении блокируется при достижении границы:
Сохраните скрипт и вернитесь в редактор. Попробуйте воспроизвести сцену и еще раз переместить вагонетку влево и вправо. Вагонеткаа останавливается, как только она перемещается к одному из краев.
Создание и стрельба снарядами
Прежде чем вы сможете начать что-либо запускать, вам нужно создать GameObject для стога сены. Начните с создания нового пустого GameObject в иерархии, щелкнув правой кнопкой мыши на пустое пространство и выбрав Create Empty. Это создаст пустой GameObject с именем GameObject в корне иерархии.
Не снимая выделения с пустого GameObject, измените его имя на Hay Bale в инспекторе и сбросьте его компонент Transform, щелкнув правой кнопкой мыши компонент Transform и выбрав Reset.
Затем выберите Hay Bale и добавьте следующие компоненты с помощью кнопки Add Component:
Теперь, когда стог сена имеет необходимые компоненты для использования физики и может вращаться для анимации, пришло время настроить его.
Тюк будет сброшен вагонеткой и полетит прямо вперед, не подвергаясь воздействию силы тяжести. Позже в этом уроке, когда вы добавите овец, она будет использоваться, чтобы овцы не причиняли себе вреда.
Сохраните сцену и нажмите кнопку воспроизведения. Вы увидете, что сено крутится на месте.
Чтобы сено двинулось вперед, вам нужно написать еще один служебный скрипт. Создайте новый сценарий C# в RW/Scripts, назовите его Move и откройте его в редакторе кода.
Добавьте следующие объявления переменных в начало класса прямо над методом Start :
Вот для чего они нужны:
Теперь добавьте следующее Update :
Это то, что на самом деле перемещает GameObject с помощью translation, это геометрический термин, который означает преобразование точки на расстояние в заданном направлении. По сути, это означает перемещение GameObject в контексте Unity.
Метод Translate принимает два параметра: первое направление и скорость, в то время как второе — пространство, в котором происходит движение. Движение умножается на Time.deltaTime, чтобы выполнить плавное движение в течение определенного периода времени.
Сохраните этот скрипт и вернитесь в редактор. Добавьте компонент Move в Hay Bale, установите его Movement Speed на (X: 0, Y: 0, Z: 20) и оставьте в Space выбор World.
Теперь включите сцену, и вы увидите, что тюк сена летит к мостам и исчезает с экрана, отлично!
Перетащите Hay Bale в папку RW/Prefabs, чтобы превратить его в префаб, и удалите оригинал из иерархии. Теперь вы сможете ссылаться на этот префаб, чтобы создавать больше, когда захотите.
Чтобы вагонетка выбрасывала тюки, вам нужно написать скрипт. Откройте скрипт HayMachine и добавьте следующие объявления переменных прямо вверху Start :
Вот краткое объяснение переменных:
Теперь добавьте метод ShootHay ниже UpdateMovement :
Чтобы вызвать приведенный выше код, вам понадобится код для запроса ввода. Добавьте следующий метод чуть выше ShootHay :
Вот что делает этот блок кода:
Наконец, добавьте эту строку Update прямо под UpdateMovement(); :
Это вызывает метод в каждым кадре.
Теперь сохраните этот скрипт и вернитесь в редактор. Выберите Hay Machine в иерархии, разверните его, щелкнув стрелку слева, и посмотрите в инспектор.
Новые общедоступные переменные, которые вы только что добавили, стали полями, которые можно назначать. Перетащите Hay Bale из RW/Prefabs на слот Hay Bale Prefabe, перетащите Hay Spawnpoint на слот Hay Spawnpoint и установить Shoot Interval 0,8.
Теперь сохраните сцену и нажмите кнопку воспроизведения. Перемещайте вагонетку с помощью клавиш со стрелками и стреляйте сеном с помощью клавиши пробела!
Все должно работать как на GIF-изображении выше.
Возможно, вы заметили, что тюки никогда не разрушаются и продолжают бесконечно улетать в никуда.
Теги и реакция на физику
Чтобы идентифицировать типы GameObject, вы можете использовать теги. Теги — это справочные слова, такие как «Player» или «Collectible», которые вы можете назначить GameObjects, чтобы легко их находить и отличать от других GameObject. В качестве тега можно использовать любое слово или короткое предложение.
Создать новый тег довольно просто: выберите Edit ► Project Settings в верхнем меню и откройте вкладку Tags and Layers в окне Project Settings. Теперь разверните список Tags, и вы заметите, что в проекте уже есть два предварительно загруженных тега : DestroyHay и DropSheep.
Теперь разница между тюками сена и другими игровыми объектами очевидна: вы можете добавить область, которая разрушает сено при соприкосновении с ним. Добавьте новый пустой GameObject в иерархию и назовите его Triggers. Сбросьте его Transform и добавьте пустой GameObject в качестве его дочернего элемента. Назовите его Hay Destroyer.
Теперь, чтобы этот триггер уничтожал каждое сено, вам нужно написать еще один служебный скрипт. Создайте новый сценарий C# внутри RW /Scripts, назовите его DestroyOnTrigger и откройте его в редакторе кода. Полностью удалите методы Start и Update и добавьте вместо них это объявление переменной:
Эта строка позволит вам ввести имя любого тега, который уничтожит этот GameObject.
Теперь добавьте этот метод под только что добавленной переменной:
Вот что происходит:
Сохраните этот сценарий и вернитесь в редактор. Пришло время его проверить!
Выберите Hay Bale в RW /Prefabs, добавьте компонент Destroy On Trigger и измените Tag Filter на DestroyHay.
Теперь нажмите кнопку воспроизведения и попробуйте снова. Вы заметите, что любое сено, попавшее в «Hay Destroyer», мгновенно уничтожается.
Скрипты для овец
В игре, которую вы создаете, стадо овец в панике бежит к вам, ни перед чем не останавливаясь.
Теперь овца в инспекторе должна выглядеть так:
Теперь эта овца готова к написанию сценария!
До сих пор вы создавали общие сценарии, которые можно повторно использовать для любого GameObject или даже других проектов. Сценарий, который вы собираетесь написать, намного более конкретен, потому что его взаимодействие довольно уникально и со временем будет усложняться по мере добавления в игру дополнительных функций.
Создайте новый сценарий C# с именем Sheep в RW /Scripts и откройте его в редакторе кода.
Для начала овце просто нужно бежать вперед и исчезнуть, когда ее ударит тюк сена. Добавьте следующие объявления переменных прямо выше Start :
Вот для чего они нужны:
Разобравшись с этим, добавьте эту строку в Update :
Затем добавьте этот метод ниже Update :
Вот суть этого метода:
Последняя часть заставляет овцу реагировать на физику, добавляя следующий код:
На этом пока что все, сохраните сценарий и вернитесь в редактор. Выберите Sheep в иерархии и добавьте компонент Sheep. Установите скорость бега на 10 и задержку уничтожения сена на 1.
Теперь запустите сцену, выстрелите в овцу и посмотрите, что произойдет!
Потрясающие! Овца перестает двигаться и исчезает, как вы и написали. Что произойдет, если овца пробежит мимо, а вы ее не пристрелите? Перезапустите сцену и проверьте это.
Овечка пролетает через край как по волшебству, это нехорошо! Вам нужно будет создать еще одну зону срабатывания, чтобы сценарий Sheep мог обнаруживать столкновения с ней и соответствующим образом реагировать.
Когда овца попадает в триггер, она должна упасть и исчезнуть из поля зрения. Чтобы реализовать это, вам необходимо внести некоторые изменения в скрипт Sheep. Снова откройте его в редакторе кода и добавьте следующие объявления переменных ниже существующих:
Они говорят сами за себя, но вот краткий обзор:
Теперь назначьте необходимые ссылки, добавив это в Start :
Это находит и кэширует коллайдер овцы и твердое тело для дальнейшего использования.
Затем необходимо настроить коллайдер овцы, чтобы на него повлияла гравитация. Для этого добавьте этот метод:
Теперь добавьте следующее OnTriggerEnter прямо под существующим оператором if:
Если овца была сбита чем-то другим, кроме тюка сена, он проверяет, имеет ли столкнувший коллайдер тег DropSheep; Drop вызывается, если это так.
Снова воспроизведите сцену и позвольте овце пройти мимо вагонетки, чтобы увидеть, что произойдет.
Теперь падает и пропадает, когда игроку не удается в нее попасть.
Теперь, когда овца действует так, как задумано, перетащите ее из иерархии в папку RW/Prefabs, чтобы превратить ее в префаб и удалить оригинал из иерархии.
Это первая часть этого урока! Похвалите себя, вы узнали основы создания скриптов для реализации игрового процесса в Unity.