Как копировать предметы в юнити

Unity hotkeys

This page gives an overview of the default Unity keyboard shortcuts. You can also download a PDF of the table for Windows and MacOSX. Where a command has Ctrl/Cmd as part of the keystroke, this indicates that the Control key should be used on Windows and the Command key on MacOSX.

The Mac trackpad also has a number of shortcuts for navigating the Scene view. See Scene view navigation to learn more about these.

Tools
“Горячая” клавишаCommand
QPan
WMove
ERotate
RScale
TRect Tool
ZPivot Mode toggle
XPivot Rotation Toggle
VVertex Snap
CTRL/CMD+ЛКМSnap
GameObject
Ctrl/Cmd+Shift+NNew empty game object
Alt+Shift+NNew empty child to selected game object
Ctrl/Cmd+Alt+FMove to view
Ctrl/Cmd+Shift+FAlign with view
Shift+F or double-FLocks the scene view camera to the selected GameObject
Window
Ctrl/Cmd+1Scene
Ctrl/Cmd+2Game
Ctrl/Cmd+3Inspector
Ctrl/Cmd+4Hierarchy
Ctrl/Cmd+5Project
Ctrl/Cmd+6Animation
Ctrl/Cmd+7Profiler
Ctrl/Cmd+9Asset store
Ctrl/Cmd+0Version Control
Ctrl/Cmd+Shift+CConsole
Edit
Ctrl/Cmd+ZUndo
Ctrl+Y (Windows only)Redo
Cmd+Shift+Z (Mac only)Redo
Ctrl/Cmd+XCut
Ctrl/Cmd+CCopy
Ctrl/Cmd+VPaste
Ctrl/Cmd+DDuplicate
Shift+DelDelete
FFrame (centre) selection
Ctrl/Cmd+FFind
Ctrl/Cmd+ASelect All
Ctrl/Cmd+PPlay
Ctrl/Cmd+Shift+PPause
Ctrl/Cmd+Alt+PStep
Selection
Ctrl/Cmd+Shift+1Load Selection 1
Ctrl/Cmd+Shift+2Load Selection 2
Ctrl/Cmd+Shift+3Load Selection 3
Ctrl/Cmd+Shift+4Load Selection 4
Ctrl/Cmd+Shift+5Load Selection 5
Ctrl/Cmd+Shift+6Load Selection 6
Ctrl/Cmd+Shift+7Load Selection 7
Ctrl/Cmd+Shift+8Load Selection 8
Ctrl/Cmd+Shift+9Load Selection 9
Ctrl/Cmd+Alt+1Save Selection 1
Ctrl/Cmd+Alt+2Save Selection 2
Ctrl/Cmd+Alt+3Save Selection 3
Ctrl/Cmd+Alt+4Save Selection 4
Ctrl/Cmd+Alt+5Save Selection 5
Ctrl/Cmd+Alt+6Save Selection 6
Ctrl/Cmd+Alt+7Save Selection 7
Ctrl/Cmd+Alt+8Save Selection 8
Ctrl/Cmd+Alt+9Save Selection 9
Assets
Ctrl/Cmd+RRefresh

Note: The following Animation hotkeys only work in the Animation window.

Источник

Управление игровыми объектами (GameObjects) с помощью компонентов

В редакторе Unity вы изменяете свойства Компонента используя окно Inspector. Так, например, изменения позиции компонента Transform приведет к изменению позиции игрового объекта. Аналогично, вы можете изменить цвет материала компонента Renderer или массу твёрдого тела (RigidBody) с соответствующим влиянием на отображение или поведение игрового объекта. По большей части скрипты также изменяют свойства компонентов для управления игровыми объектами. Разница, однако, в том, что скрипт может изменять значение свойства постепенно со временем или по получению ввода от пользователя. За счет изменения, создания и уничтожения объектов в заданное время может быть реализован любой игровой процесс.

Обращение к компонентам

Наиболее простым и распространенным является случай, когда скрипту необходимо обратиться к другим компонентам, присоединенных к тому же GameObject. Как упоминалось во разделе Введение, компонент на самом деле является экземпляром класса, так что первым шагом будет получение ссылки на экземпляр компонента, с которым вы хотите работать. Это делается с помощью функции GetComponent. Типично, объект компонента сохраняют в переменную, это делается в C# посредством следующего синтаксиса:

В UnityScript синтаксис немного отличается:

Как только у вас есть ссылка на экземпляр компонента, вы можете устанавливать значения его свойств, тех же, которые вы можете изменить в окне Inspector:

Имейте ввиду, что нет причины, по которой вы не можете иметь больше одного пользовательского скрипта, присоединенного к одному и тому же объекту. Если вам нужно обратиться к одному скрипту из другого, вы можете использовать, как обычно, GetComponent, используя при этом имя класса скрипта (или имя файла), чтобы указать какой тип Компонента вам нужен.

Если вы попытаетесь извлечь Компонент, который не был добавлен к Игровому Объекту, тогда GetComponent вернет null; возникнет ошибка пустой ссылки при выполнении (null reference error at runtime), если вы попытаетесь изменить какие-либо значения у пустого объекта.

Обращение к другим объектам

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

Связывание объектов через переменные

Переменная будет видна в окне Inspector, как и любые другие:

Как копировать предметы в юнити. GameObjectPublicVar. Как копировать предметы в юнити фото. Как копировать предметы в юнити-GameObjectPublicVar. картинка Как копировать предметы в юнити. картинка GameObjectPublicVar

Теперь вы можете перетащить объект со сцены или из панели Hierarchy в эту переменную, чтобы назначить его. Функция GetComponent и доступ к переменным компонента доступны как для этого объекта, так и для других, то есть вы можете использовать следующий код:

Кроме того, если объявить переменную с доступом public и заданным типом компонента в вашем скрипте, вы сможете перетащить любой объект, который содержит присоединенный компонент такого типа. Это позволит обращаться к компоненту напрямую, а не через игровой объект.

Соединение объектов через переменные наиболее полезно, когда вы имеете дело с отдельными объектами, имеющими постоянную связь. Вы можете использовать массив для хранения связи с несколькими объектами одного типа, но связи все равно должны быть заданы в редакторе Unity, а не во время выполнения. Часто удобно находить объекты во время выполнения, и Unity предоставляет два основных способа сделать это, описанных ниже.

Нахождение дочерних объектов

Иногда игровая сцена может использовать несколько объектов одного типа, таких как враги, путевые точки и препятствия. Может возникнуть необходимость отслеживания их в определенном скрипте, который управляет или реагирует на них (например, все путевые точки могут потребоваться для скрипта поиска пути). Можно использовать переменные для связывания этих объектов, но это сделает процесс проектирования утомительным, если каждую новую путевую точку нужно будет перетащить в переменную в скрипте. Аналогично, при удалении путевой точки придется удалять ссылку на отсутствующий объект. В случаях, наподобие этого, чаще всего удобно управлять набором объектов, сделав их дочерними одного родительского объекта. Дочерние объекты могут быть получены, используя компонент Transform родителя (так как все игровые объекты неявно содержат Transform):

Вы можете также найти заданный дочерний объект по имени, используя функцию Transform.Find:

Источник

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

Как копировать предметы в юнити. EmptyGO. Как копировать предметы в юнити фото. Как копировать предметы в юнити-EmptyGO. картинка Как копировать предметы в юнити. картинка EmptyGOДаже пустые игровые объекты имеют компонент Transform

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

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

Как копировать предметы в юнити. RigidBodyGO. Как копировать предметы в юнити фото. Как копировать предметы в юнити-RigidBodyGO. картинка Как копировать предметы в юнити. картинка RigidBodyGOПустой игровой объект с компонентом Rigidbody

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

Как копировать предметы в юнити. ComponentBrowser. Как копировать предметы в юнити фото. Как копировать предметы в юнити-ComponentBrowser. картинка Как копировать предметы в юнити. картинка ComponentBrowserБраузер компонентов

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

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

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

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

Как копировать предметы в юнити. AudioGO. Как копировать предметы в юнити фото. Как копировать предметы в юнити-AudioGO. картинка Как копировать предметы в юнити. картинка AudioGO

Как копировать предметы в юнити. AudioReference. Как копировать предметы в юнити фото. Как копировать предметы в юнити-AudioReference. картинка Как копировать предметы в юнити. картинка AudioReferenceТеперь файл со звуковым эффектом назначен свойству Audio Clip

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

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

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

Как копировать предметы в юнити. . Как копировать предметы в юнити фото. Как копировать предметы в юнити-. картинка Как копировать предметы в юнити. картинкаКонтекстное меню компонента

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

Сбросить

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

Удалить

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

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

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

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

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

Источник

Unity3D копировать параметры компонентов [РЕШЕНО]

Всем, доброго времени суток. Надеюсь, на форуме есть любители Unity3D.
есть GameObject go с компонентом ObjStates(скрипт), в котором хранятся некие данные.
Вопрос: как можно вытянуть эти данные и присвоить другому объекту с таким же компонентом и при этом первый объект удалить?
Заранее, благодарю. Очень буду рад любым попыткам мне помочь.)

Сначала получаешь ссылку на экземпляр класса хранящегося в объекте 1

Все понятно, кроме «GetDataFromOldClass». Это что-за функция такая?

Я пробовал по такому принципу:
controller = OBJ1.GetComponentinChildren ();
OBJ2.GetComponentinChildren () = controller;
или
OBJ1.GetComponentinChildren () =
OBJ2.GetComponentinChildren ();
Но при удалении первого объекта данныe во втором тоже удаляются(.

Ты присваиваешь ссылку, поэтому и удалется.
Ты должен создать новый компонент в новом объекте.
Взять старый компонент из старого объекта.
Присвоить поля от одного к другому, имено поля а не объекты, через рефлекшен или серелизатор юньки.
Потом удалить старый компонент из объекта.

Все заработало! Большое спасибо за помощь!!
Рабочий вариант:
Component new_comp;

GameObject g = (Instantiate(Resources.Load(path)) as GameObject); //Загрузил префаб
Component old_comp = g.GetComponent (); //взял ссылку
new_comp = gameObject.AddComponent ();// вот без этого не работало
// и вручную перетащил параметры
new_comp.texture = old_component.texture;
GameObject.Destroy(g);

Источник

Как создать простой инвентарь в Unity

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

Как копировать предметы в юнити. 5dd28edba62c6d26f1f2f0eb3e953210. Как копировать предметы в юнити фото. Как копировать предметы в юнити-5dd28edba62c6d26f1f2f0eb3e953210. картинка Как копировать предметы в юнити. картинка 5dd28edba62c6d26f1f2f0eb3e953210

Как копировать предметы в юнити. bd37ffd136ceb98bcfb7752c95ef50e1. Как копировать предметы в юнити фото. Как копировать предметы в юнити-bd37ffd136ceb98bcfb7752c95ef50e1. картинка Как копировать предметы в юнити. картинка bd37ffd136ceb98bcfb7752c95ef50e1

Чтобы реализовать инвентарь, нужно уже уметь создавать простые игры и работать с интерфейсами.

Как создать окно инвентаря

Добавьте на карту элементы Canvas с именем InventoryCanvas и Panel, в котором будут находиться остальные элементы:

Как копировать предметы в юнити. 14152030072019 e3ea06ecc4efe66fd609360c227a5daace25eda6. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152030072019 e3ea06ecc4efe66fd609360c227a5daace25eda6. картинка Как копировать предметы в юнити. картинка 14152030072019 e3ea06ecc4efe66fd609360c227a5daace25eda6

Как копировать предметы в юнити. kucheryaviy. Как копировать предметы в юнити фото. Как копировать предметы в юнити-kucheryaviy. картинка Как копировать предметы в юнити. картинка kucheryaviy

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

В компоненте Canvas Scaller укажите в UI Scale Mode вариант Scale With Screen. Так размер инвентаря будет зависеть от разрешения экрана. Внутри Panel создайте еще одну панель и назовите ее Items:

Как копировать предметы в юнити. 14152130072019 6a4e9b3ae3023faad72ace61e6264ce47ed78056. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 6a4e9b3ae3023faad72ace61e6264ce47ed78056. картинка Как копировать предметы в юнити. картинка 14152130072019 6a4e9b3ae3023faad72ace61e6264ce47ed78056

Поменяйте цвет и добавьте компонент Grid Layout Group — он позволит расположить компоненты по сетке. Можно указать отступы и размер клеток. Затем добавьте название окна — это еще одна панель с текстом.

Как копировать предметы в юнити. 14152130072019 db52642fc67f6c7c46657360f234a883af322464. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 db52642fc67f6c7c46657360f234a883af322464. картинка Как копировать предметы в юнити. картинка 14152130072019 db52642fc67f6c7c46657360f234a883af322464

Теперь пора приступить к созданию ячеек. Внутри панели Items создайте кнопку и назовите ее Slot. Внутрь кнопки добавьте Image и назовите этот элемент Icon — в нем будет отображаться спрайт предмета. Также создайте пустой скрипт Slot.cs, а потом сохраните слот как префаб.

После этого можно создать несколько копий ячейки, которые автоматически расположатся по сетке.

Как копировать предметы в юнити. 14152130072019 c3d4b76cd89b05f2c8e5da53f69c6d45806e9160. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 c3d4b76cd89b05f2c8e5da53f69c6d45806e9160. картинка Как копировать предметы в юнити. картинка 14152130072019 c3d4b76cd89b05f2c8e5da53f69c6d45806e9160

Теперь нужен скрипт, который будет отвечать за открытие и закрытие инвентаря и другой функционал, — Inventory.cs. Прикрепите его к InventoryCanvas.

Вот как это выглядит:

Как копировать предметы в юнити. 14152130072019 f0646c625095b49e4e4c41332dd1408112ad8d69. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 f0646c625095b49e4e4c41332dd1408112ad8d69. картинка Как копировать предметы в юнити. картинка 14152130072019 f0646c625095b49e4e4c41332dd1408112ad8d69

Как создать предмет

Рассмотреть создание предметов можно на примере брони для танка. Она будет выглядеть так:

Как копировать предметы в юнити. 14152130072019 7b64da46b2dc4329c15be64aeef9e636261e678c. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 7b64da46b2dc4329c15be64aeef9e636261e678c. картинка Как копировать предметы в юнити. картинка 14152130072019 7b64da46b2dc4329c15be64aeef9e636261e678c

А на танке крепится так:

Как копировать предметы в юнити. 14152130072019 4fb6fa4fbc0158ec7cf1e48acc6733dd567fe239. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 4fb6fa4fbc0158ec7cf1e48acc6733dd567fe239. картинка Как копировать предметы в юнити. картинка 14152130072019 4fb6fa4fbc0158ec7cf1e48acc6733dd567fe239

Для начала перетащите спрайт на карту и добавьте ему коллайдер с триггером:

Как копировать предметы в юнити. 14152130072019 93b8888c66d5103a8bb4f5fd89e04622d16558ec. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 93b8888c66d5103a8bb4f5fd89e04622d16558ec. картинка Как копировать предметы в юнити. картинка 14152130072019 93b8888c66d5103a8bb4f5fd89e04622d16558ec

Триггер нужен, чтобы его объект можно было «подбирать», наезжая на него. Добавьте скрипт Item.cs:

Вот как будет выглядеть подбор предмета:

Как копировать предметы в юнити. 14152130072019 48e955bcaa6ce26801c4639bf77f723f030656e1. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 48e955bcaa6ce26801c4639bf77f723f030656e1. картинка Как копировать предметы в юнити. картинка 14152130072019 48e955bcaa6ce26801c4639bf77f723f030656e1

Пока скрипт Items.cs не создан, поэтому попытка его вызова может привести к ошибке — закомментируйте строку obj.GetComponent ().AddItem (index);

Как подобрать предмет

Создайте скрипт Items.cs и добавьте его персонажу:

Перед запуском игры нужно немного изменить персонажа. Создайте пустой объект и перетащите ему все компоненты персонажа. Сам же спрайт поместите внутрь этого объекта. Также нужно создать объект Armor — ему будет задаваться спрайт текущей брони:

Как копировать предметы в юнити. 14152130072019 8bc1aa9ad985c6b5f9a267787eba176dd734e55f. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 8bc1aa9ad985c6b5f9a267787eba176dd734e55f. картинка Как копировать предметы в юнити. картинка 14152130072019 8bc1aa9ad985c6b5f9a267787eba176dd734e55f

Как добавить предмет в инвентарь

Теперь нужно сделать так, чтобы подобранные предметы отображались в инвентаре. Для этого добавьте вот такой код в скрипт Slot.cs:

Чтобы новый скрипт работал, нужно добавить новый функционал в Inventory.cs:

Вот как выглядит инвентарь с предметами:

Как копировать предметы в юнити. 14152130072019 27e9aa5bdf801f94f7728fe14d1ac08405e5a691. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 27e9aa5bdf801f94f7728fe14d1ac08405e5a691. картинка Как копировать предметы в юнити. картинка 14152130072019 27e9aa5bdf801f94f7728fe14d1ac08405e5a691

Как надеть предмет

За надевание предмета будет отвечать скрипт Items:

Теперь метод Equip () нужно прикрепить к слоту и указать его номер. Первая ячейка должна идти под номером 0, вторая — под 1 и так далее:

Как копировать предметы в юнити. 14152130072019 152245077ac6dbcf53ad14fb93a3bbc9c8bae8d3. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 152245077ac6dbcf53ad14fb93a3bbc9c8bae8d3. картинка Как копировать предметы в юнити. картинка 14152130072019 152245077ac6dbcf53ad14fb93a3bbc9c8bae8d3

Теперь пора проверить, как всё это работает:

Как копировать предметы в юнити. 14152130072019 60ddb9390c7c246f6f384c5280a3e2f296db8bec. Как копировать предметы в юнити фото. Как копировать предметы в юнити-14152130072019 60ddb9390c7c246f6f384c5280a3e2f296db8bec. картинка Как копировать предметы в юнити. картинка 14152130072019 60ddb9390c7c246f6f384c5280a3e2f296db8bec

Заключение

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

Если вы хотите лучше изучить работу с Unity, записывайтесь на курс «Профессия разработчик игр на Unity». Вы научитесь создавать все основные компоненты для игры и сможете работать над крупными проектами.

Источник

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

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