Как добавить компонент через скрипт unity
Перейти к содержимому

Как добавить компонент через скрипт unity

  • автор:

Создание компонентов с помощью скриптов

Сценарии (или создание сценариев) — это написание собственных дополнений к функциональным возможностям редактора Unity в коде с использованием Unity Scripting API.

Когда вы создаете сценарий и прикрепляете его к GameObject фундаментальному объекту в сценах Unity, который может представлять персонажей, реквизит , пейзажи, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь , скрипт появляется в Окно GameObject Inspector Unity, в котором отображается информация о текущем выбранном GameObject, активе или настройках проекта, что позволяет вам проверить и отредактировать значения. Подробнее
Смотрите в Словарь , как встроенный компонент. Это связано с тем, что скрипты фрагмент кода, который позволяет создавать собственные компоненты, запускать игровые события, изменять свойства компонентов с течением времени и реагировать на ввод пользователя любым удобным для вас способом. Подробнее
См. в Словарь стать компоненты Функциональная часть GameObject. GameObject может содержать любое количество компонентов. В Unity есть много встроенных компонентов, и вы можете создавать свои собственные, написав сценарии, которые наследуются от MonoBehaviour. Подробнее
См. в Словарь при сохранении их в проекте.

С технической точки зрения любой скрипт, который вы создаете, компилируется как тип компонента, поэтому редактор Unity обрабатывает ваш скрипт как встроенный компонент. Вы определяете элементы скрипта, которые будут отображаться в Инспекторе, а Редактор выполняет любую написанную вами функциональность.

Подробнее о создании и использовании сценариев читайте в разделе Сценарии данного руководства пользователя.

Создание и Использование Скриптов

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

Unity supports the C# programming language natively. C# (pronounced C-sharp) is an industry-standard language similar to Java or C++.

In addition to this, many other .NET languages can be used with Unity if they can compile a compatible DLL — see here for further details.

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

Создание скриптов

Unlike most other assets, scripts are usually created within Unity directly. You can create a new script from the Create menu at the top left of the Project panel or by selecting Assets > Create > C# Script from the main menu.

Новый скрипт будет создан в папке, которую вы выбрали в панели Project. Имя нового скрипта будет выделено, предлагая вам ввести новое имя.

Лучше ввести новое имя скрипта сразу после создания чем изменять его потом. Имя, которое вы введете будет использовано, чтобы создать начальный текст в скрипте, как описано ниже.

Структура файла скрипта

When you double-click a script Asset in Unity, it will be opened in a text editor. By default, Unity will use Visual Studio, but you can select any editor you like from the External Tools panel in Unity’s preferences (go to Unity > Preferences).

Содержимое файла будет выглядеть примерно так:

using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour < // Use this for initialization void Start () < >// Update is called once per frame void Update () < >> 

Скрипт взаимодействует с внутренними механизмами Unity за счет создания класса, наследованного от встроенного класса, называемого MonoBehaviour. Вы можете думать о классе как о своего рода плане для создания нового типа компонента, который может быть прикреплен к игровому объекту. Каждый раз, когда вы присоединяете скриптовый компонент к игровому объекту, создается новый экземпляр объекта, определенный планом. Имя класса берется из имени, которое вы указали при создании файла. Имя класса и имя файла должны быть одинаковыми, для того, чтобы скриптовый компонент мог быть присоединен к игровому объекту.

Основные вещи, достойные внимания, это две функции, определенные внутри класса. Функция Update — это место для размещения кода, который будет обрабатывать обновление кадра для игрового объекта. Это может быть движение, срабатывание действий и ответная реакция на ввод пользователя, в основном всё, что должно быть обработано с течением времени во игровом процессе. Чтобы позволить функции Update выполнять свою работу, часто бывает полезно инициализировать переменные, считать свойства и осуществить связь с другими игровыми объектами до того, как будут совершены какие-либо действия. Функция Start будет вызвана Unity до начала игрового процесса (т.е. до первого вызова функции Update), и это идеальное место для выполнения инициализации.

Заметка для опытных программистов: вы можете быть удивлены, что инициализация объекта выполняется не в функции-конструкторе. Это потому, что создание объектов обрабатывается редактором и происходит не в начале игрового процесса, как вы могли бы ожидать. Если вы попытаетесь определить конструктор для скриптового компонента, он будет мешать нормальной работе Unity и может вызвать серьезные проблемы с проектом.

Управление игровым объектом

Как было сказано ранее, скрипт определяет только план компонента и, таким образом, никакой его код не будет активирован до тех пор, пока экземпляр скрипта не будет присоединен к игровому объекту. Вы можете прикрепить скрипт перетаскиванием ассета скрипта на игровой объект в панели Hierarchy или через окно Inspector выбранного игрового объекта. Имеется также подменю Scripts в меню Component, которое содержит все скрипты, доступные в проекте, включая те, которые вы создали сами. Экземпляр скрипта выглядит так же, как и другие компоненты в окне Inspector:-

После присоединения скрипт начнет работать, когда вы нажмете Play и запустите игру. Вы можете проверить это добавив следующий код в функцию Start:-

// Use this for initialization void Start ()

Debug.Log is a simple command that just prints a message to Unity’s console output. If you press Play now, you should see the message at the bottom of the main Unity editor window and in the Console window (menu: Window > General > Console).

  • 2018–03–19 Page amended
  • MonoDevelop replaced by Visual Studio from 2018.1

Использование компонентов

Компоненты ( Components ) определяют поведение объектов в игре. Они — функциональная часть каждого игрового объекта ( GameObject ). Если вы ещё не поняли взаимосвязи компонентов и игровых объектов, прочитайте страницу GameObjects, прежде чем двигаться дальше.

Игровой объект является контейнером для различных компонентов. По умолчанию у всех игровых объектов есть компонент Transform . Потому что Transform диктует, где расположен игровой объект, и как он поворачивается и масштабируется. Без компонента Transform, игровой объект не будет иметь место в мире. Попробуйте создать пустой игровой объект в качестве примера. Выберите в меню GameObject->Create Empty . Выберите новый игровой объект, и посмотрите в инспектор ( Inspector ).

Даже пустые игровые объекты имеют компонент Transform

Помните, что вы всегда можете использовать инспектор, чтобы увидеть, какие компоненты добавлены к выбранному игровому объекту. Компоненты добавляются и удаляются, а инспектор всегда покажет вам, какие из них находятся на объекте в настоящее время. Вы будете использовать инспектор, чтобы изменить все свойства любого компонента (включая скрипты)

Добавление компонентов

Вы можете добавить компоненты к выбранному игровому объекту через меню Components. Сейчас мы попробуем это, добавив Rigidbody на пустой игровой объект, который только что создали. Выделите его и выберите в меню Component->Physics->Rigidbody . После этого, вы увидите, что в инспекторе отобразился компонент Rigidbody и его свойства. Если нажать Play в то время как пустой игровой объект все еще выбран, вы можете получить небольшой сюрприз. Попробуйте, и обратите внимание, как Rigidbody добавил функциональность пустому игровому объекту (Y-компонент игрового объекта начинает уменьшаться, потому что физический движок в Unity заставляет игровой объект падать под действием силы тяжести).

Пустой игровой объект с компонентом Rigidbody

Другой вариант заключается в использовании браузера компонентов ( Component Browser ), который может быть активирована с помощью кнопки Add Component в инспекторе объекта.

Браузер компонентов

Браузер обеспечивает удобную навигацию по компонентам с помощью категорий, а также имеет окно поиска, которое можно использовать, чтобы найти компоненты по имени.

Вы можете прикрепить любое количество или комбинацию компонентов к одному игровому объекту. Некоторые компоненты работают лучше в сочетании с другими. Например, Rigidbody работает с любым коллайдером. Rigidbody контролирует Transform через физический движок NVIDIA PhysX ,а коллайдер позволяет Rigidbody сталкиваться и взаимодействовать с другими коллайдерами.

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

Редактирование компонентов

Одной из замечательных особенностей компонентов является гибкость. При подключении компонента к игровому объекту, существуют различные значения или свойства ( Properties ) в компоненте, которые могут изменяться в редакторе при создании игры или через скрипты в запущенной игре. Есть два основных типа свойств: значения ( Values ) и ссылки ( References ).

Взгляните на изображение ниже. Это пустой Игровой Объект с компонентом Audio Source . Все параметры компонента Audio Source в Инспекторе выставлены по умолчанию.

Компонент содержит одно свойство-ссылку и семь свойств-значений. Audio Clip — это свойство-ссылка. Когда этот аудио источник начинает играть, он будет пытаться проиграть файл, на который ссылается свойство Audio Clip . Если такой ссылки не окажется, то возникнет ошибка, так как никакое аудио не будет проиграно. Вы должны назначить файл в Инспекторе. Это просто: перетащите файл из Project View на свойство-ссылку или с помощью выбора объекта (Object Selector).

Теперь файл со звуковым эффектом назначен свойству Audio Clip

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

Все остальные свойства после Audio Clip это свойства-значения. Они могут быть отрегулированы прямо в Инспекторе. Свойства значения после Audio Clip — это все переключатели, числовые значения и выпадающие меню, но свойства-значения могут также быть текстовыми строками, цветами, кривыми и другими типами. Вы можете узнать больше об этом и о редактировании свойств-значении на странице о редактировании свойств-значений.

Команды контекстного меню компонента

Контекстное меню для компонента имеет ряд полезных команд.

Контекстное меню компонента

Те же команды также доступны через иконку-шестеренку в крайнем верхнем правом углу панели компонента в инспекторе.

Сбросить

Эта команда восстанавливает значения свойств компонента, которые были до самой последней сессии редактирования.

Удалить

Команда Remove Component доступна в случаях, когда вы более не нуждаетесь в связи компонента с игровым объектом. Обратите внимание, что некоторые комбинации компонентов, которые зависят друг от друга, работают только когда Rigidbody также прикреплено; вы увидите предупреждающее сообщение, если вы попробуете удалить компоненты, которые зависят от каких-либо других компонентов.

Переместить Вверх/Вниз

Каждый компонент Image Effects применяет определенный визуальный эффект к итоговому изображению, но порядок, в котором эффекты применяются, важен. Контекстное меню имеет Move Up (поднять вверх) и Move Down (опустить вниз).

Скопировать/Вставить

Команда Copy Component сохраняет тип и текущие настройки свойств компонента. Они могут быть вставлены в другой компонент того же типа с помощью команды Paste Component Values . Вы также можете создать компонент в объекте со скопированными свойствами, используя команду Paste Component As New .

Проверка свойств

Пока ваша игра находится в Режиме Проигрывания , вы вольны изменять свойства любых Игровых Объектов в инспекторе. Например, вы можете захотеть поэкспериментировать с разными высотами прыжка. Если вы создадите свойство Jump Height в скрипте, вы сможете войти в Режим Проигрывания, изменить значение, и нажать кнопку прыжка, чтобы посмотреть, что произойдет. Затем, не выходя из Режима Проигрывания, вы можете изменить его снова и увидеть результат через секунду. Когда вы выйдете из Режима Проигрывания, ваши свойства вернутся к их изначальным “предыгровым” значениям, так что вы не потеряете свои труды. Такой рабочий процесс дает вам невероятную мощь для экспериментов, регулировки и совершенствования геймплея без лишних затрат времени в повторяющихся циклах. Попробуйте это с любыми свойствами в Режиме Проигрывания. Мы думаем, вы будете впечатлены.

GameObject.AddComponent

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

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста попробуйте снова через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Ваше имя Адрес вашей электронной почты Предложение * Разместить предложенное
public function AddComponent ( className : string): Component;
public Component AddComponent (string className );

Параметры

Описание

Добавляет компонент класса className на игровой объект.

Эта функция используется для изменения поведения объектов на лету. Вы также можете добавить скрипт к игровому объекту, путем передачи имени скрипта.

Некоторые компоненты требуют наличия других компонентов на том же игровом объекте. Функция AddComponent автоматически добавляет любой требуемый компонент, например, если вы добавите HingeJoint, то автоматически будет добавлен и Rigidbody.

// Adds the sphere collider to the game object var sc : SphereCollider; sc = gameObject.AddComponent ("SphereCollider");
// Adds the sphere collider to the game object SphereCollider sc = gameObject.AddComponent("SphereCollider") as SphereCollider;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *