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

Как создать пустой объект в unity

  • автор:

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

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

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

Even empty GameObjects have a Transform Component

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

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

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

An empty GameObject with a Rigidbody Component attached

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

The Component Browser

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

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

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

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

One of the great aspects of Components is flexibility. When you attach a Component to a GameObject, there are different values or Properties in the Component that can be adjusted in the editor while building a game, or by scripts when running the game. There are two main types of Properties: Values and References.

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

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

Now a sound effect file is referenced in the Audio Clip property

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

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

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

The context menu for a component has a number of useful commands.

The Component Context Menu

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

Сбросить

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

Удалить

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

Move Up/Down

Use the Move Up and Move Down commands to rearrange the order of components of a GameObject in the Inspector.

Tip: Alternatively, click and drag the component’s name up or down in the Inspector window, and then drop it.

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

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

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

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

  • 2018–09–18 Page amended
  • Ability to drag and drop components in Inspector window added in 5.6

Инстанировать пустой объект Unity

Если мне необходимо создать пустой объект(как в редакторе Create Empty), мне нужно создавать префаб, давать ссылку на него или можно как то просто взять и создать пустой объект?

Отслеживать
задан 4 июл 2017 в 6:09
1,693 5 5 золотых знаков 34 34 серебряных знака 54 54 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

 _delta = new GameObject("name").AddComponent(); 

Можете попробовать такой способ, где это тип переменной, компонент. Для создания пустого объекта нужно сделать:

GameObject _delta = new GameObject("name"); 

Отслеживать
ответ дан 4 июл 2017 в 6:14
codename895431 codename895431
336 1 1 серебряный знак 10 10 бронзовых знаков

  • c#
  • unity3d
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.30.8466

Как создать пустой объект в unity

Tolking 09 сен 2013, 21:02

Как программно создать пустой игровой объект? Без использования префабов и т.п.?
Ковчег построил любитель, профессионалы построили Титаник.

Tolking Адепт Сообщения: 2716 Зарегистрирован: 08 июн 2009, 18:22 Откуда: Тула

Re: Создание пустого геймобъекта

Kayler 09 сен 2013, 21:04

GameObject go = new GameObject();

Kayler Адепт Сообщения: 1038 Зарегистрирован: 25 авг 2010, 23:49 Откуда: Чувашия

Re: Создание пустого геймобъекта

Tolking 09 сен 2013, 21:11

Ковчег построил любитель, профессионалы построили Титаник.

Tolking Адепт Сообщения: 2716 Зарегистрирован: 08 июн 2009, 18:22 Откуда: Тула
Сообщений: 3 • Страница 1 из 1

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] , Yandex [Bot] и гости: 17

  • Список форумов
  • Техподдержка • Наша команда • Удалить cookies конференции • Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB

Как создать спавн объектов в Unity

Приветствую начинающих разработчиков! В данной статье мы научимся спавнить объекты на игровой сцене на примере 2D игры. Хотя он подойдёт и для 3д, но с минимальными изменениями в коде. Долго затягивать не будем, а приступим сразу к делу.

Для начала с помощью окна Hierarchy создадим пустой игровой объект(Create Empty), и назовём его SpawnArea. Этот объект будет являться нашим спавнером. Так же создайте префаб того объекта, который будет спавниться. Я создал свой префаб на основе обычного круглого 2д объекта (2D Object — Sprites — Circle). Назвал данный префаб Circle.

Спавнер вместе с префабом готов! Но чтобы этот спавнер работал, необходимо написать скрипт. С помощью окна Project создадим C# скрипт с названием Spawner, и заранее присвойте его нашему объекту с названием SpawnArea. В скрипт пропишите следующие строчки кода:

using UnityEngine; public class Spawner : MonoBehaviour < public GameObject enemyPrefab; public float timeSpawn = 2f; private float timer; private void Start() < timer = timeSpawn; >private void Update() < timer -= Time.deltaTime; if (timer > >

Давайте вкратце разберём код:

  • В строке #5 мы создали переменную enemyPrefab, в которой будет храниться ссылка на наш префаб, который будет спавниться.
  • В строках #7-8 мы создали две переменные отвечающие за время. В переменной timeSpawn хранится информация о том, сколько необходимо времени, для создания объекта на сцене. А в timer будет хранится сам таймер, по истечении которого будет создаваться объект на игровой сцене. Чуть позже вы поймёте разницу.
  • В методе Start() мы в переменную timer заносим значение из timeSpawn.
  • В методе Update() мы каждый кадр уменьшаем время нашего таймера timer, и как только оно закончится, то значение timer обновляется, а на игровой сцене, с помощью метода Instantiate() создаётся новый объект.

И в завершении необходимо настроить наш скрипт в окне Inspector:

  • В поле Enemy Prefab перетащите префаб Вашего объекта Circle.
  • В поле Time Spawn укажите время спавна для таймера. Я указал значение 2.

Готово! На этом этапе можете запустить свой проект, и убедиться, что всё работает успешно! Каждые 2 секунды происходит создание нового игрового объекта.

Спавнер созданный выше хорошо работает, но предлагаю его немного усовершенствовать, поскольку мне не нравятся в нём две вещи. Во-первых, все объекты создаются в одной точке, а хотелось бы, чтобы они создавались в случайной области в пределах определённого радиуса. А во-вторых, хотелось бы, чтобы создание объектов не производилось в тех случаях, когда в игре уже присутствует 10 объектов.

Предлагаю чуть чуть переписать наш код следующим образом:

using UnityEngine; public class Spawner : MonoBehaviour < public GameObject enemyPrefab; public int maxEnemy = 5; public float timeSpawn = 2f; private float timer; public float distance = 3; private void Start() < timer = timeSpawn; >private void Update() < timer -= Time.deltaTime; if (timer > > > 

Что же мы тут добавили? В строке #6 мы добавили переменную maxEnemy, которая отвечает за максимальное количество созданных объектов на игровой сцене. А в строке #11 в переменной distance храниться множитель для нашего радиуса спавнера, в пределах которого будут создаваться объекты. А сам радиус прописывается в строке #26 через Random.insideUnitCircle.

В строке #24 с помощью свойства childCount мы проверяем, сколько у нас имеется созданных объектов. И если их число меньше 10, то происходит создание нового объекта, иначе — ничего не делать.

Наш скрипт готов! Теперь запустим его, и увидим следующую картину. Каждые 2 секунды в нашем проекте создаётся по одному объекту, в случайной точке, радиусом в 3, от нашего спавнера. И как только было создано 10 объектов, спавнер прекращает свою работу.

Но и этот спавн можно усовершенствовать. Мы можем спавнить не один и тот же объект, а разные объекты, которые будут спавниться случайным образом. Но это уже совсем другая история. О том, как это можно реализовать, можете прочитать наш отдельный гайд, под названием «Создаём рандомный спавн объектов».

На этом наш гайд подошёл к концу. Если остались вопросы, задавайте их в комментариях. А так же не забывайте ставить свои лайки.

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

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