Перейти к содержимому

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

  • автор:

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

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

Отслеживать
задан 4 июл 2017 в 6:09
1,693 5 5 золотых знаков 32 32 серебряных знака 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.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

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

Компоненты (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

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

Компоненты — основные элементы поведения объектов в игре. Они — функциональная часть любого Объекта. Если вы еще не поняли взаимоотношений Компонентов и Объектов — прочитайте страницу Объекты игры.

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

TheGameObject-ComponentRelationship-0

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

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

Вы можете добавить Компоненты к выбранному Объекту игры через меню компонентов. Мы попробуем сделать это сейчас добавив Ригидбоди к только что созданному Объекту. Выберите объект и перейдите в меню Component->Physics->Rigidbody. После этого Вы увидите свойства компонента Ригидбоди в Инспекторе. Если Вы нажмете Play Вы можете удивиться. Попробуйте и увидите как Ригидбоди изменило поведение объекта, добавив к нему новую функциональность (смотрите на y-компоненту позиции объекта — она уменьшается. Это потому что физический движок теперь заставляет объект падать под действием гравитации).

UsingComponents40-1

Другая возможность добавить компонент — активировать Браузер компонентов, который открывается кнопкой Добавить компонент (Add Component) в Инспекторе.

UsingComponents40-2

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

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

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

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

Один из самых крутых плюсов применения компонентов — гибкость. Когда Вы прикрепляете компонент к Объекту, появляется возможность настройки различных свойств компонента в редакторе перед сборкой игры, или из скрипта во время запуска игры. Есть два главных типа свойств — Значения и Ссылки.

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

UsingComponents40-3

Этот компонент содержит одно свойство Ссылки и семь свойств — Значений. Ссылка — Аудио Клип (Audio Clip). Когда данный аудио источник включается, он пытается проиграть аудио файл на который ссылается свойство Audio Clip. Если ссылка не установлена — будет ошибка отсутствия аудио. Вы должны указать ссылку на файл в Инспекторе. Это можно сделать просто перетащи аудио файл из Окна Проекта на свойство, или можно использовать Object Selector.

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

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

Остальные свойства Аудио клипа — Значения. Они могут быть настроены напрямую в Инспекторе. Эти свойства у Аудиоклипа — переключатели, числовые значения, выпадающие поля. Однако такие свойства могут быть также текстовыми строками, цветом, кривыми или другими типами. Вы можете почитать дополнительно о редактировании свойств значений на странице Редактирование свойств значений.

Копирование и вставка установок компонентов [ ]

Контекстное меню для компонента имеет строки для копирования и вставки его значений.

UsingComponents40-5

Скопированные значения могут быть вставлены в существующие компоненты. Альтернативно — Вы можете использовать меню Вставить компонент как новый (Paste Component As New) для создания нового компонента с теми же значениями.

Тестирование свойств [ ]

Когда Вы в режиме игры, Вы можете свободно изменять свойства любого объекта в Инспекторе. Например Вы можете захотеть поэкспериментировать с различными свойствами прыжка. Если Вы создадите свойство высоты прыжка (Jump Height) в Вашем скрипте, Вы можете войти в режим игры, изменить значение и нажать кнопку прыжка, чтобы увидеть что изменилось. Затем без выхода из режима игры Вы можете изменять его снова, чтобы подобрать нужное. Когда Вы выйдете из режима игры Ваше свойство вернется к установленному до входа в игру. Это свойство дает Вам потрясающую мощь для экспериментирования и настройки Вашей игры без с малыми затратами времени. Испытайте это с любым свойством — Вы будете впечатлены.

Изменение порядка компонентов [ ]

Порядок, в котором располагаются компоненты в Инспекторе в большинстве случаев не имеет значения. Однако для некоторых компонентов, таких как Эффекты порядок важен. Контекстное меню Сдвинуть вверх и сдвинуть вниз позволяет Вам изменить порядок, если необходимо.

UsingComponents40-6

Удаление компонентов [ ]

Если Вы хотите удалить компонент щелкните правой мышкой на заголовке компонента в инспекторе и выберите Удалить компонент (Remove Component). Или Вы можете щелкнуть по иконке рядом с ? в заголовке компонента. Все свойства и установки будут потеряны и это действие отмене не подлежит, так что будьте совершенно уверены в своих действиях, когда удаляете компонент.

Как сделать 3D игру на Unity

Как сделать 3D игру на Unity

Unity – это кросс-платформенный движок для разработки игр, который используется для создания 2D и 3D игр на множестве платформ, включая PC, мобильные устройства и игровые консоли. В этой статье мы рассмотрим, как создать 3D игру на Unity с помощью проекта «Roll-A-Ball».

Проект «Roll-A-Ball» – это классическая игра, в которой игрок управляет шариком и собирает монеты. Она идеально подходит для начинающих разработчиков, поскольку не требует большого количества кода и предоставляет хорошую основу для изучения основных концепций Unity, таких как создание сцены, настройка камеры, создание объектов и управление ими.

Шаг 1: Установка Unity

Установка Unity

Первым шагом для создания 3D игры на Unity является установка самого движка. Unity может быть загружен с официального сайта: https://unity.com/. Необходимо выбрать подходящую версию и установить ее на ваш компьютер.

Шаг 2: Создание нового проекта

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

После установки Unity, необходимо создать новый проект. Для этого запустите Unity и нажмите «New» в окне «Project Wizard». Введите название проекта и выберите место, где вы хотите сохранить проект. Затем нажмите кнопку «Create».

Шаг 3: Создание сцены

Создание сцены Unity

После создания нового проекта необходимо создать сцену для нашей игры. Для этого выберите «File» -> «New Scene» в главном меню Unity. Затем нажмите на кнопку «Save» и выберите место, где вы хотите сохранить сцену.

Шаг 4: Добавление объектов

Добавление объектов Unity

Теперь мы готовы начать добавлять объекты на сцену. Для создания шарика, выберите «GameObject» -> «3D Object» -> «Sphere» в главном меню Unity. Затем измените размер шарика, щелкнув правой кнопкой мыши на объекте в иерархии и выбрав «Scale». Измените значение масштаба шарика на (0.5, 0.5, 0.5).

Чтобы создать пол, выберите «GameObject» -> «3D Object» -> «Plane». Затем измените масштаб плоскости на (5, 1, 5).

Шаг 5: Создание материалов

Создание материалов Unity

Теперь мы готовы добавить материалы наших объектов.

Выберите «Assets» -> «Create» -> «Material» в главном меню Unity. Затем назовите материал «BallMaterial» и установите цвет шарика на красный. Для этого выберите цвет в окне «Inspector» для нового материала.

Аналогично создайте материал для пола, назвав его «FloorMaterial». Установите цвет пола на синий.

Шаг 6: Назначение материалов

Назначение материалов Unity

Теперь мы готовы назначить созданные материалы на наши объекты. Щелкните правой кнопкой мыши на шарике в иерархии и выберите «Add Component» -> «Mesh Renderer» в контекстном меню.

В окне «Inspector» выберите созданный ранее материал «BallMaterial» в разделе «Materials».

Теперь сделайте то же самое для плоскости. Щелкните правой кнопкой мыши на плоскости в иерархии и выберите «Add Component» -> «Mesh Renderer» в контекстном меню. В окне «Inspector» выберите созданный ранее материал «FloorMaterial» в разделе «Materials».

Шаг 7: Настройка камеры

Настройка камеры Unity

Теперь мы готовы настроить камеру. Выберите «GameObject» -> «Create Empty» в главном меню Unity, чтобы создать пустой объект. Назовите его «Main Camera». Затем выберите новый объект «Main Camera» в иерархии и в окне «Inspector» установите следующие параметры:

Поле зрения (FOV): 60

Расстояние до ближней плоскости отсечения (Near): 0.3

Расстояние до дальней плоскости отсечения (Far): 1000

Шаг 8: Создание скриптов

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

Теперь мы готовы создать скрипты для управления шариком и сбора монет. Создайте новую папку «Scripts» в окне «Project». Щелкните правой кнопкой мыши на созданной папке и выберите «Create» -> «C# Script».

Назовите первый скрипт «PlayerController». Этот скрипт будет управлять шариком.

Откройте скрипт и введите следующий код:

Код Unity

Этот скрипт определяет, как шарик будет перемещаться по уровню.

Поле «speed» определяет скорость перемещения шарика. Переменная «rb» содержит компонент Rigidbody, который мы будем использовать для перемещения шарика. В методе «Start» мы получаем компонент Rigidbody для шарика. В методе «FixedUpdate» мы получаем ввод от пользователя с помощью функций «Input.GetAxis». Эти функции возвращают значения оси горизонтали и вертикали (для клавиатуры это A/D и W/S соответственно). Мы затем создаем новый вектор «movement» из этих значений и добавляем силу, направленную в этом направлении, с помощью метода «rb.AddForce».

Сохраните скрипт и вернитесь в редактор Unity.

Щелкните правой кнопкой мыши на шарике в иерархии и выберите «Add Component» -> «Scripts» -> «PlayerController» в контекстном меню. В разделе «Player Controller (Script)» в окне «Inspector» установите значение «Speed» на 10.

Редактор Unity

Создайте еще один скрипт, который мы будем использовать для сбора монет. Щелкните правой кнопкой мыши на папке «Scripts» в окне «Project» и выберите «Create» -> «C# Script».

Назовите скрипт «Rotator». Откройте скрипт и введите следующий код:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rotator : MonoBehaviour < void Update() < transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime); >>

Редактор Unity

Этот скрипт поворачивает монеты вокруг своей оси. Мы используем функцию «transform.Rotate» для поворота монет на 15 градусов вокруг оси X, 30 градусов вокруг оси Y и 45 градусов вокруг оси Z. Мы также умножаем этот вектор на «Time.deltaTime», чтобы сделать поворот плавным и зависящим от времени.

Сохраните скрипт и вернитесь в редактор Unity. Щелкните правой кнопкой мыши на монетке в иерархии и выберите «Add Component» -> «Scripts» -> «Rotator» в контекстном меню.

Шаг 9: Расстановка монет

Расстановка монет Unity

Теперь мы готовы добавить монеты на наш уровень. Создайте пустой объект, назовите его «Coins». В этом объекте мы будем хранить все монеты.

Создайте еще один пустой объект внутри «Coins» и назовите его «Coin».

Пустой объект внутри «Coins»

Мы будем использовать объект «Coin» в качестве прототипа для каждой монеты. Создайте копию объекта «Coin», щелкнув правой кнопкой мыши на нем в иерархии и выбрав «Duplicate» из контекстного меню. Переместите копию объекта «Coin» в нужное место на уровне, используя инструмент «Move» из панели инструментов слева или клавиши W/A/S/D. Повторите этот процесс, пока не добавите все монеты на уровень.

Теперь мы должны сделать так, чтобы шарик мог собирать монеты. Откройте скрипт «PlayerController» и добавьте следующий код в метод «void OnTriggerEnter(Collider other)»:

if (other.gameObject.CompareTag(«Coin»)) < other.gameObject.SetActive(false); >

Этот код проверяет, если объект, с которым столкнулся шарик, имеет тег «Coin», то мы деактивируем этот объект с помощью метода «SetActive(false)». Это скроет монету и она больше не будет отображаться на уровне.

Сохраните скрипт и вернитесь в редактор Unity. Выберите любую монету на уровне в иерархии и в окне «Inspector» установите значение «Tag» равным «Coin».

Теперь вы можете запустить игру и собирать монеты, перемещая шарик по уровню с помощью клавиатуры или WASD.

Шаг 10: Добавление звуков

Добавление звуков Unity

Наконец, мы можем добавить звуковые эффекты нашей игре. Создайте папку «Audio» в окне «Project». Затем перетащите любой звуковой файл в эту папку. Например, вы можете использовать звук «coin_pickup.wav», который можно найти в интернете.

Создайте новый пустой объект в иерархии и назовите его «Audio Manager». Добавьте компонент «Audio Source» на объект «Audio Manager». В разделе «Audio Source» в окне «Inspector» выберите звуковой файл, который вы добавили в папку «Audio». Установите галочку на «Loop» и «Play On Awake». Это заставит звук проигрываться бесконечно, когда игра запущена.

Редактор Unity

Откройте скрипт «PlayerController» и добавьте следующий код в метод «void OnTriggerEnter(Collider other)»:

if (other.gameObject.CompareTag(«Coin»)) < other.gameObject.SetActive(false); AudioSource audio = GetComponent (); audio.Play(); >

Этот код получает компонент «Audio Source» из объекта «Audio Manager» и вызывает метод «Play», чтобы воспроизвести звук «Pickup». Обратите внимание, что этот код использует «GetComponent» для получения компонента «Audio Source» из другого объекта в сцене.

Теперь нам нужно определить, что должно происходить при сборе всех монет на уровне. Мы будем использовать компонент «Level Manager», чтобы определить это.

Вернитесь к объекту «Level Manager» и добавьте следующий код:

using UnityEngine; using UnityEngine.SceneManagement; public class LevelManager : MonoBehaviour < public void LoadNextLevel() < SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1); >>

Этот код добавляет публичный метод «LoadNextLevel», который загружает следующий уровень в сцене, используя метод «LoadScene» из компонента «SceneManager». Мы будем вызывать этот метод, когда все монеты на уровне будут собраны.

Теперь, вернитесь к объекту «Player» и откройте скрипт «PlayerController». Добавьте следующий код в верхней части скрипта, после определения переменных:

public int coinCount; public int coinTotal; public GameObject levelManager;

Этот код добавляет две публичные переменные «coinCount» и «coinTotal», которые мы будем использовать для подсчета собранных монет и общего количества монет на уровне соответственно. Мы также добавляем переменную «levelManager», чтобы иметь доступ к компоненту «Level Manager» из скрипта «PlayerController».

Теперь, в функции «OnTriggerEnter», после кода, который обрабатывает сбор монеты, добавьте следующий код:

Этот код добавляет две публичные переменные «coinCount» и «coinTotal», которые мы будем использовать для подсчета собранных монет и общего количества монет на уровне соответственно. Мы также добавляем переменную «levelManager», чтобы иметь доступ к компоненту «Level Manager» из скрипта «PlayerController». Теперь, в функции «OnTriggerEnter», после кода, который обрабатывает сбор монеты, добавьте следующий код:

Этот код увеличивает значение переменной «coinCount» на 1 каждый раз, когда игрок собирает монету. Затем он проверяет, равно ли значение «coinCount» общему количеству монет на уровне, хранящемуся в переменной «coinTotal». Если это так, то мы вызываем метод «LoadNextLevel» из компонента «Level Manager», который загружает следующий уровень в сцене.

Игра «Roll-A-Ball» на Unity

Теперь мы закончили с созданием игры «Roll-A-Ball» на Unity! Вы можете запустить игру и наслаждаться прохождением уровней, собирая монеты и управляя шариком. Надеюсь, этот гайд помог вам изучить основы создания игр на Unity и дал вам некоторые идеи о том, как можно использовать эту мощную платформу для создания своих собственных.

Ну а если вы хотите научится создавать 3D игры сами, то запишитесь на бесплатный пробный урок по Unity в нашей школе программирования для детей Progkids.

Карен Константин

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

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