Система строительства в Unity2D

Возникла проблема с системой строительства в Unity2D, скрины с объектов инспектора: Код скрипта тайлмапа:
public class BuildingsGrid : MonoBehaviour < public Vector2Int GridSize = new Vector2Int(10, 10); private Building[,] grid; private Building FlyingBuilding; [SerializeField] private Camera mainCamera; private void Awake() < grid = new Building[GridSize.x, GridSize.y]; mainCamera = Camera.main; >public void StartPlacingBuilding(Building buildingPrefab) < if (FlyingBuilding != null) < Destroy(FlyingBuilding.gameObject); >FlyingBuilding = Instantiate(buildingPrefab); > private void Update() < Debug.Log(mainCamera.ScreenToWorldPoint(Input.mousePosition)); Vector2 mouseWorldPosition = mainCamera.ScreenToWorldPoint(Input.mousePosition); if (FlyingBuilding != null) < int x = Mathf.RoundToInt(mouseWorldPosition.x); int y = Mathf.RoundToInt(mouseWorldPosition.y); FlyingBuilding.transform.position = new Vector2(x, y); if (Input.GetMouseButtonDown(0)) FlyingBuilding = null; if (Input.GetMouseButtonDown(1)) Destroy(FlyingBuilding.gameObject); >> >
Код скрипта строения:
public class Building : MonoBehaviour < public Vector2Int Size = Vector2Int.one; private void OnDrawGizmosSelected() < for (int x = 0; x < Size.x; x++) < for (int y = 0; y < Size.y; y++) < Gizmos.color = new Color(0.88f, 0f, 1f, 0.3f); Gizmos.DrawCube(transform.position + new Vector3(x, y, 0), new Vector3(1, 1, 0)); >> > >
Здание выбирается по кнопке, летает за курсором, но возникла проблема с его постановкой. При нажатии на кнопку здание ставится (сразу под кнопкой) и тут же создаётся новое вместо того, чтобы старое просто уничтожалось. Как понял, здесь нужно использовать Ray2D или RaycastHit2D, но мне не хватает навыков (в гугле не забанили, но не нашёл решения). Пытался адаптировать код с гайда где был показан пример для 3D. Заранее спасибо за ответ.
Публикация сборок
В любой момент разработки игры можете захотеть посмотреть на то, как она выглядит вне редактора, при сборке в качестве самостоятельного приложения или веб-проигрывателя. В этом разделе рассказано, как вызвать и использовать окно Build Settings (настройки сборки) для создания разных сборок ваших игр.
Пункт меню File->Build Settings… позволяет открыть окно Build Settings. В нём выводится редактируемый список сцен для включения в сборку игры.

Список будет пуст при первом открытии этого окна в проекте. В таком случае, при сборке, в игру будет включена только текущая открытая сцена. Если вы желаете быстро собрать тестовый плеер с единственной текущей сценой, просто соберите плеер с пустым списком сцен.
Для создания сборки с несколькими сценами можно довольно просто добавить нужные сцены в этот список. Первый способ заключается в нажатии кнопки Add Current . Вы увидите, что текущая сцена появилась в списке. Второй способ предполагает перетаскивание в список сцены из окна Project View .
Следует заметить, что каждая из сцен в списке имеет свой индекс. Scene 0 — это первая сцена, которая будет загружена в сборке. Если вы желаете загрузить другую сцену во время игры, используйте в вашем коде метод Application.LoadLevel().
Если вы добавили более одной сцены и хотите изменить их порядок, просто перетаскивайте сцены в списке до тех пор, пока не добьётесь необходимого вам порядка.
Чтобы удалить сцену из списка, достаточно выбрать её в списке и нажать Command-Delete (на Mac) или Delete (на Win). Сцена пропадёт из списка и не будет включена в сборку.
Когда вы будете готовы к публикации своей сборки, выберите нужную платформу в списке Platform и удостоверьтесь, что напротив неё находится логотип Unity; если это не так, тогда нажмите кнопку Switch Platform , чтобы сообщить Unity о том, под какую платформу вы желаете совершать сборку. После этого, нажмите кнопку Build . Откроется стандартное диалоговое окно сохранения файла, в котором вы можете выбрать имя и расположение для игры. После нажатия кнопки Сохранить Unity соберёт ваше приложение, и готово! Довольно просто, не так ли? Если вы не уверены, куда лучше сохранять сборку, сохраняйте её в корневую папку проектов. Вы не можете сохранять сборку в папку Assets.
Включение опции Development Build добавит плееру возможность использовать Profiler и позволит изменять опции Autoconnect Profiler и Script Debugging.
Further information about the Build Settings window can be found on the Build Settings page.
Сборка standalone плееров
Unity может собирать standalone приложения для Windows, Mac и Linux. Достаточно просто выбрать целевую платформу в настройках сборки и нажать кнопку ‘Build’. При сборке standalone проигрывателей, получаемые в результате файлы могут различаться в зависимости от выбранной платформы. На Windows в результате сборки будет создан исполняемый файл (.exe) и папка “Data”, содержащая все ресурсы приложения. На Mac будет создан “app bundle”, содержащий все необходимые файлы для запуска приложения и его ресурсы.
Распространение standalone приложения на Mac заключается в передаче “app bundle” (в него упаковано всё необходимое). На Windows необходимо предоставить .exe-файл и папку Data, чтобы другие могли запустить приложение. То есть, чтобы другие пользователи могли запустить у себя ваши приложения, на их компьютерах должны быть файлы, которые для вас собрал Unity.
В недрах процесса сборки
Сперва процесс сборки разместит пустую копию игры там, где вы указали. Затем он начнёт прорабатывать список сцен в настройках сборки: открывать в редакторе одну из них за раз, оптимизировать их и интегрировать их в пакет приложения. Он также подсчитает все ассеты, необходимые включенным в сборку сценам и сохранит эти данные в отдельном файле внутри пакета приложения.
- Любой GameObject в сцене с тэгом ‘EditorOnly’ не будет включён в собираемый пакет. Это удобно для отладки скриптов, которые не должны оказаться в финальной игре.
- Все объекты в текущем уровне уничтожаются при загрузке нового уровня. Чтобы это предотвратить, используйте DontDestroyOnLoad() на любых объектах, которые вы желаете уберечь от уничтожения. Обычно это используют для проигрываемой при загрузке уровня музыки, или для скриптов игровых контроллеров, которых хранят состояние и прогресс игры.
- После загрузки уровня будет разослано сообщение OnLevelWasLoaded() всем активным игровым объектам.
- Для дополнительной информации о том, как лучше всего создавать игры, в которых насколько сцен (например, главное меню, экран рейтинга и сами уровни игры), ознакомьтесь с нашими уроками.
Предварительная загрузка (далее — прелоадинг)
Опубликованные сборки автоматически осуществляют прелоадинг всех ассетов в сцене при её загрузке. Исключением является сцена 0, так как она, как правило, используется в качестве загрузочного экрана, который нужно отобразить как можно быстрее.
Если вы желаете, чтобы прелоадинг осуществлялся для всего содержимого, достаточно просто создать пустую сцену, в которой будет вызываться Application.LoadLevel(1) , и в окне настроек сборки сделать её первой в списке сцен (чтобы индекс был 0). Все последующие уровни будут загружаться с прелоадингом.
Вы готовы собирать игры
На данный момент вы изучили, как использовать интерфейс Unity, как использовать ассеты, как создавать сцены и как публиковать ваши сборки. Теперь вас ничто не останавливает от создания игры вашей мечты. Мы уверены, что по пути вам ещё предстоит многое узнать, и мы всегда рядом, чтобы помочь вам во всём разобраться.
Для дополнительной информации о том, как создавать игровые уровни, см. раздел Построение сцен.
Для дополнительной информации о написании скриптов для вашей игры, см. раздел Скриптинг.
Для дополнительной информации о создании графических ассетов, см. раздел Импорт и создание ассетов данного руководства.
Для общения с другими пользователями Unity, посетите Unity Forums. Там вы можете задавать вопросы, делиться проектами, строить команду, можете делать там всё, что вы захотите. Обязательно загляните на форумы хотя бы один раз, потому что мы хотим посмотреть на невероятные игры, которые вы создадите.
Перспективы применения технологии 3D реального времени в архитектуре и строительстве
Узнайте о том, как компании в области архитектуры и строительства осваивают 3D реального времени, меняя подходы к проектированию, строительству и эксплуатации зданий.

Опыт использования технологий 3D реального времени лидерами отрасли
Прежде чем приступить к обсуждению 3D реального времени, поговорим о том, как ваши коллеги внедряют их в свою деятельность.
Благодаря своим преимуществам, технология 3D реального времени стала завоевывать новые позиции в архитектуре, проектировании, строительстве, энергетике, государственном управлении, здравоохранении, транспорте и во многих других отраслях.
В чем достоинства 3D реального времени?
3D реального времени (RT3D) — это технология компьютерной графики, которая генерирует интерактивный контент быстрее человеческого восприятия. Загляните на эту страницу, чтобы узнать подробные сведения об этой технологии.
Интерактивность — это ключевое преимущество 3D реального времени. В отличие от кинематографа, создающего иллюзию движения без возможности активного участия зрителя в процессе, 3D реального времени погружает зрителя в цифровую реальность, создавая ощущение аутентичности и давая возможность управлять происходящим, аналогично видеоиграм.
Приложения с 3D-графикой реального времени имеют две фундаментальные особенности:
- иммерсивность, благодаря приближению цифровой реальности к аналоговому восприятию реального мира;
- интерактивность, благодаря возможности пользователю точно контролировать происходящее и выбирать точку обзора.
Существует много способов применения технологии 3D реального времени, но основное направление для этих компаний — разработка и выпуск приложений, сочетающих цифровые модели зданий с информацией из других источников, например, метаданных и датчиков. Иногда называемые «цифровыми двойниками», эти модели выглядят и ведут себя аналогично реальному продукту. Эти приложения можно запускать на мобильных устройствах, компьютерах, гарнитурах дополненной (AR) и виртуальной (VR) реальности и на других платформах.
Оцените приложение с 3D-графикой реального времени
Ознакомившись с технологией 3D реального времени, прогуляйтесь по нашему лондонскому офису, воссозданному в 3D реального времени с помощью Unity.
Загрузка может занять пару минут, но уверяем вас, оно того стоит. Пока идет загрузка, вы можете продолжить чтение.
Знакомьтесь с интерьером и не забывайте, что вы можете менять время суток и отдельные элементы дизайна.
- Влияние 3D реального времени на бизнес
- Лучшие способы использования 3D реального времени
- Ценность внедрения 3D реального времени в бизнес
Влияние 3D реального времени на бизнес
Одна из важнейших проблем у компаний из индустрии архитектуры и строительства — повышение эффективности и продуктивности. Исправление недостатков, вызванных недостаточно эффективной организацией работ, отбирает у компаний строительной отрасли около 450 млрд $ в год. Согласно отчету McKinsey & Company 20% строительных проектов сдаются с опозданием и 80% проектов выходят за рамки бюджета. В условиях пандемии 2020 года эти сложности проявляются особенно сильно.
Компании используют 3D реального времени, чтобы упростить решение этих проблем. Исследования показывают, что 3D реального времени открывает следующие возможности.
- Экономия затрат благодаря выявлению недостатков дизайна и проектирования на ранних этапах и последовательному выполнению плана для соблюдения сроков.
- Привлечение новых клиентов путем представления зданий в VR и разработки передовых AR-приложений.
- Ускорение разработки за счет повышения эффективности совместной работы различных специалистов и объединения данных из разного ПО (Revit, Navisworks, Rhino и т. д.) в одной модели.
Снижение текучести кадров благодаря повышению продуктивности и безопасности труда с помощью интерактивных AR/VR-приложений.

Лучшие способы использования 3D реального времени
Возможности применения технологии 3D реального времени безграничны — от дизайна и подготовки к строительству до работ на площадке и других видов деятельности после сдачи объекта. Освоившие эту технологию архитектурно-строительные компании используют ее очень широко — согласно исследованию, проведенному компанией Forrester Consulting по поручению Unity и опубликованному в марте 2020 года, в среднем на протяжении жизненного цикла проекта насчитывается более четырех различных вариантов использования.
Некоторые примеры из жизненного цикла постройки здания
Дизайн и проектирование
Распространенные варианты применения использования: анализ проекта в иммерсивной среде, визуализация дизайна, проектирование конструкций, контроль реализации проекта, сбор отзывов от участников и т. д.
Реальные примеры 3D реального времени: компания SHoP Architects внедрила создание приложений с 3D-графикой реального времени и тем самым сократила временные затраты на оптимизацию больших проектов с нескольких дней до нескольких минут.
Планирование и моделирование строительства
Распространенные варианты применения использования: планирование и координация строительных работ, выявление конфликтов, AR-сопровождение на площадке в масштабе 1:1, составление смет, координация BIM, сопровождение на площадке, контроль и обеспечение качества, составление документации и т. д.
Реальные примеры 3D реального времени: Mortenson создала инструмент, моделирующий дизайн больничных помещений в VR для повышения эффективности ухода за пациентами и работы сотрудников, а также для снижения затрат.
Обучение и сопровождение деятельности
Распространенные варианты применения: инструктаж по технике безопасности в VR, AR-сопровождение, дистанционное обслуживание, цифровые двойники с графикой реального времени, визуализация данных и т.д.
Реальные примеры 3D реального времени: Skanska ускорила обучение технике безопасности на строительной площадке, внедрив VR-приложение на основе Unity в стандартную программу инструктажа по технике безопасности.
Продажи и маркетинг
Распространенные варианты применения: виртуальные мероприятия, фотореалистичный рендеринг, деморолики, иммерсивное сопровождение процесса приобретения недвижимости, приложения для отображения объектов недвижимости в смешанной реальности и т. д.
Реальные примеры 3D реального времени: SmartPixel разработала интерактивное приложение для Maestria Condominiums, чтобы потенциальные клиенты могли ознакомиться со своими будущими владениями.
Ценность внедрения 3D реального времени в бизнес
3D реального времени позволяет решить целый ряд проблем всего жизненного цикла объектов, повышая эффективность их дизайна, строительства и эксплуатации. Исследование, проведенное Forrester Consulting, выявило следующее.
В большинстве случаев компании уже используют 3D реального времени во многих аспектах бизнеса. [Они] замечают, что чем шире внедряется технология 3D реального времени, тем теснее интегрируются процессы, благодаря созданию интерактивной среды для сотрудничества и коммуникации.
В самом деле, 90% компаний, использующих 3D реального времени, считают эту технологию ценной для координации усилий различных отделов. Этому есть причина: модель в виртуальной среде позволяет использовать ее самыми разными способами в самых разных аспектах.
Это значит, что виртуальные модели, созданные на этапе дизайна, также могут быть полезны строителям в форме AR-приложений с масштабом отображения 1:1, а также специалистам по эксплуатации в форме приложений для обслуживания с высоким качеством графики и интерактивностью. Такая синергия ускоряет строительство, повышает эффективность, минимизируя отставание от графика и выход за рамки бюджета.
Воплощение 3D-приложений в жизнь
Компании могут использовать всю мощь 3D реального времени благодаря Unity, ведущей платформе разработки 3D-контента с графикой реального времени, и аналогичному ПО. Иногда называемые игровыми движками, поскольку технология пришла из мира игр, эти платформы предлагают мощный инструментарий как для создания интерактивного цифрового контента, так и для его развертывания на различных платформах, включая мобильные устройства, компьютеры и HMD-гарнитуры.
Рассмотрим процесс разработки и потребления контента с 3D-графикой реального времени.
- Кто создает приложения с 3D-графикой реального времени?
- Как создаются приложения с 3D-графикой реального времени?
- Как публикуются приложения с 3D-графикой реального времени?

Кто создает приложения с 3D-графикой реального времени?
Сегодня ведущие разработчики приложений с 3D-графикой реального времени имеют техническое образование, например, инженеры ПО или разработчики AR/VR. Дело в том, что подавляющее большинство корпоративных приложений, созданных по этой технологии, требуют собственных разработок и опыта программирования. В Unity используется язык C#.
Но при этом число пользователей 3D реального времени растет, поскольку Unity и другие компании повышают доступность 3D реального времени для специалистов других областей, что в свою очередь упрощает масштабирование собственных разработок.
Вот несколько вариантов повышения доступности технологии 3D реального времени для людей, не знакомых с программированием.
- Визуальное программирование: среды с графическим интерфейсом на основе концепции графов, например, Bolt, позволяют художникам, дизайнерам и другим специалистам реализовать логику без единой строчки кода.
- Развитие продуктов: новые продукты, например, Unity Reflect, упрощают процесс переноса 3D-моделей в среду с графикой реального времени до нескольких щелчков мышью.
- Готовые решения: по мере увеличения спроса на иммерсивные интерактивные приложения, многие независимые разработчики ПО воспользовались технологией для разработки специализированных решений, исключающих необходимость программирования. Например, мощная платформа Interact упрощает разработку сложных VR приложений на основе моделей CAD.
Предоставление услуг: для сотрудников нетехнического профиля могут быть созданы собственные решения, учитывающие их интересы. Другой пример: расширяемость платформ, аналогичных Unity, позволяет компаниям адаптировать интерфейс и открыть специалистам нетехнического профиля все возможности 3D реального времени без необходимости в программировании.

Как создаются приложения с 3D-графикой реального времени?
Как правило разработка 3D-приложения с графикой реального времени для архитектуры и строительства начинается с обработки имеющегося контента. Импортированная 3D-геометрия и метаданные могут быть в разных форматах, например:
- Модели из систем автоматизированного проектирования (САПР, CAD), например, AutoCAD, Alias, VRED, CATIA, Creo и Siemens PLM;
- меши из приложений для 3D-моделирования и визуализации, включая Autodesk 3ds Max, Rhino, SketchUp и Blender;
- данные из реальных окружений, например, модели или облака точек, полученные методами фотограмметрии и лидарного сканирования окружений и продуктов;
- информационные модели строений (BIM) из Autodesk Revit, Navisworks и аналогичных программ;
- материалы из систем BIM, например, Autodesk Revit.
Для обеспечения производительности при максимальном качестве визуализации на различных платформах 3D-контент обычно требует оптимизации. Этот процесс позволяет сделать из сложных проектов модели, удобные для визуализации и совместимые с процессом разработки приложений с графикой реального времени, поддерживающие нужную степень интерактивности на телефонах и VR-гарнитурах. Компании могут использовать простые и эффективные решения, например, Unity Reflect, которое автоматизирует подготовку данных для графики реального времени, или инструменты, дающие контроль над всеми аспектами процесса, например, Pixyz.
После подготовки ассетов к 3D реального времени можно приступать к разработке приложения. Создание сцен можно ускорить с помощью 3D-моделей, объектов, окружений (то есть виртуального мира) и других ресурсов из Unity Asset Store. Unity ускоряет итерацию и настройку компонентов, например, анимации, звука, видео, кат-сцен, окружений, освещения, пользовательского интерфейса, визуальных эффектов и многое другое. В любой момент разработки пользователь может оценить результаты своей работы в среде реального времени: визуализация происходит мгновенно, не заставляя ждать результатов рендеринга.
Для сложных корпоративных приложений Unity предлагает дополнительную гибкость благодаря следующим компонентам.
- Искусственный интеллект (ИИ): Unity предлагает богатый набор инструментов для машинного обучения (МО) и средства интеграции с множеством платформ для ИИ и МО, что особенно полезно для обучения и проверки систем интеллекта на примере моделей окружений.
- Проектирование систем:Prespective, другой партнер Unity в области проверенных решений, предлагает мощную платформу проектирования систем для интеграции Unity с внешними системами управления, включая программируемые логические контроллеры или программные эмуляции систем управления и внешние математические модели, например, единицы функционального моделирования (FMU) или MATLAB.
Интеграция в предприятие: мощный интерфейс программирования приложений Unity (API), встроенные сетевые функции и интеграция в сторонние сетевые стеки — это надежная и отказоустойчивая система внедрения функций дистанционной совместной работы, интеграции с системами «интернета вещей» (IoT) для цифровых двойников или любыми другими сетевыми приложениями.

Как публикуются приложения с 3D-графикой реального времени?
Ценность 3D реального времени, как среды потребления, кроется в ее способности создавать параллельную реальность. Наш мир трехмерен — мы передвигаемся, думаем и воспринимаем в трехмерном пространстве. По сравнению со статичным контентом, например, изображениями и видео, расширенный эффект присутствия в моделируемом виртуальной средой пространстве дает ряд преимуществ, например, улучшение процесса решения проблем, повышенное усвоение знаний, улучшение вовлеченности и понимания и многое другое.
Unity предлагает богатый набор моделей взаимодействия, позволяющий в реальном времени взаимодействовать с работающими приложениями на мобильном устройстве, в браузере, в AR-гарнитуре, с полным погружением в VR-окружение и многое другое. 3D реального времени также можно встроить в существующий контент, например, в мобильное приложение или в страницу интернет-магазина.
Потребителями контента с 3D-графикой реального времени могут выступать как участники проекта, например, специалист на площадке, проходящий обучение технике безопасности в VR-гарнитуре, так и сторонняя аудитория, например, потенциальные покупатели со всего света, осматривающие объекты еще до того, как они построены. Это могут быть приложения как для отдельных пользователей, например, для архитекторов, выполняющих анализ проекта в реальном времени, так и для групп, например, для совместного выявления проблем дизайна до начала строительных работ, который проводит коллектив дизайнеров и строителей для снижения необходимости в запросах на внесение изменений, ускорения строительства и сокращения затрат.
Архитектура, машиностроение, строительство и операции
Раскройте разрозненные данные, упростите операционные процессы и улучшите сотрудничество заинтересованных сторон, чтобы принимать более обоснованные решения.
Будьте среди первых, кто опробует технологию PolySpatial от Unity для Apple Vision Pro Подробнее
Unity: от идеи до реальности
- Сделайте данные BIM доступнее для всех участников на всех этапах AECO в единой иммерсивной платформе
- Раскройте потенциал изолированных данных, чтобы принимать взвешенные решения
- Создавайте и развертывайте AR- и VR-приложения, чтобы решать проблемы в течение всего жизненного цикла проекта

Основные примеры использования
Цифровой двойник для бизнес-процессов
Объедините данных разрозненных систем, такие как данные систем управления ассетами, исторические и динамические данные Интернета вещей, чтобы сократить расходы на обслуживание, улучшить принятие решений и повысить операционную эффективность.
Интеллектуальное проектирование
Оптимизируйте процессы проектирования, используя RT3D-ассеты, интегрированные с интеллектуальными диаграммами процессов и инструментирования (P&ID). Позвольте конечным пользователям настраивать точные схемы объектов в реальном времени.
Предиктивное обслуживание
Повысьте уровень безопасности сотрудников и сократите число незапланированных простоев, объединив исторические, динамические и прогнозные данные. Прогнозируйте сбои, ремонт и замену всех ассетов.
Тренировка
Используйте VR, чтобы сделать обучение увлекательным и эффективным. Запускайте сценарии «что если» для обучения сотрудников первой линии выполнению рабочих задач и/или устранению инцидентов безопасности.
Подключенные сотрудники и совместная работа
Используйте те же ассеты, которые применяются для вашего цифрового двойника, чтобы объединить сотрудников для повышения эффективности совместной работы и своевременного предоставления им актуальной информации.
Экологическая и операционная эффективность
Оценивайте фактическую выработку (например, воды, отходов, углеродных выбросов и т. д.) и производительность ассетов для отслеживания целевых показателей экологического, социального и корпоративного управления (ESG) и принятия решений о необходимых изменениях операционных процессов.

Представляем Unity Industry
Unity Industry — это набор продуктов и сервисов для разработчиков, который позволяет создавать собственные RT3D-приложения для AR, VR, мобильных устройств, ПК и браузеров в любой отрасли, в том числе для автомобилестроения, энергетики, производства, розничной торговли, проектирования и многих других. Раскройте весь потенциал 3D- и CAD-данных для разработки, масштабирования и проверки ваших проектов.

Другие продукты и сервисы

Pixyz
Оптимизация 3D-данных
Продукты Pixyz оптимизируют рабочие процессы с 3D-данными:
- Оптимизация сложных рабочих процессов обработки 3D-данных
- Автоматизируйте обработку данных для 3D, CAD, BIM и облаков точек.
- Обеспечьте мгновенную совместную проверку

Accelerate Solutions
Professional Services
Сотрудничайте с ведущими разработчиками и отраслевыми экспертами Unity’s Accelerate Solutions , чтобы:
- Выявлять ключевые проблемы.
- Создавать специализированные решения на базе цифровых двойников.
- Ускорить разработку систем для AR, VR, robot OS, смешанной реальности и многих других задач.

Планы Unity Success
Усовершенствуйте свои проекты
Планы Unity Success обеспечат поддержку, чтобы вы могли:
- Решать технические трудности
- Консультироваться с экспертами и ни о чем не беспокоиться