Основные понятия облачной скриптов
Ознакомьтесь с общими сведениями о визуальном скрипте сетки и визуальном скрипте сетки
Различия между облачными скриптами Сетки и MonoBehaviours
Существует несколько основных различий между облачными скриптами Сетки и MonoBehaviours:
- Облачные службы сценариев записываются в API облачной скриптов Сетки (в отличие от API Unity).
- Облачные службы сценариев выполняются в облаке в отдельном процессе (в отличие от клиента), а их эффекты автоматически синхронизируются со всеми подключенными клиентами.
Общие сведения об архитектуре
Чтобы включить облачные скрипты Сетки, служба приложений с именем Mesh Cloud Scripting Service развертывается в определенной группе ресурсов Azure, которую вы предоставляете. Cloud Scripting выполняется в серверной части Azure и состоит из набора скриптов сервера C#, работающих в контейнере с конечной точкой, к которой подключаются клиенты. На приведенной ниже схеме видно, что есть два клиента, которые подключаются к облачной службе сценариев. Служба облачных сценариев имеет собственный достоверный граф сцены (помеченный как "A" на схеме). Служба облачных сценариев взаимодействует с этим графом сцен с помощью API графа сцены сетки Cloud Scripting.
Граф сцены сценариев сетки сетки автоматически синхронизируется из облака со всеми подключенными клиентами. Каждый клиент имеет идентичную копию графа сцены сценариев Сетки (помеченный как "B" на схеме), которая синхронизирована с авторитетной облачной версией. При внесении изменений в граф сцены в облаке службы сценариев Сетки эти изменения распространяются на копии на всех клиентах.
На каждом клиенте среда выполнения сетки Unity реагирует на изменения в экземпляре клиента графа сцены сценариев Сетки и обновляет сцену Unity, чтобы отразить его состояние. Хотя API графа сцены Сетки Cloud Scripting и API графа сцен Unity отличаются, они тесно сопоставляются друг с другом и имеют одинаковую или аналогичную структуру.
Сетка Cloud Scripting, игровые объекты и граф сцены сценариев сетки в облаке
Объекты, которые в конечном итоге отображаются в приложении Сетки, можно разделить на две категории:
Объекты, добавляемые в среду в Unity.
Объекты, с помощью которыми вы настраиваете событие . Так как они не были частью среды, Сетка Cloud Scripting не знает об этом.
Создание сцены
Чтобы включить использование облачных сценариев Сетки, сцена должна иметь компонент Cloud Scripting Сетки .
Компонент отвечает за управление создаваемыми скриптами и привязкой их к сцене Unity как во время редактирования, так и во время выполнения в приложении Сетки. Сетка Cloud Scripting — это автономная технология, но она имеет тесную интеграцию с Unity. Инструкции по добавлению объекта Mesh Cloud Scripting GameObject см. в статье " Создание простого проекта облачного скрипта" и более подробные сведения о скриптах в разделе "Руководство программиста".
Диаграмма сцены сценариев в сетке ограничена gameObjects, которые добавляются в сцену в gameObject, которая содержит компонент Cloud Scripting Сетки. Хотя облачная скриптация Сетки не может напрямую видеть иерархию сцены остальной части сцены, она может получить доступ к API, которые предоставляет приложение Сетки, например, может получить список пользователей в сцене или реагировать на выбранный объект.
Компоненты и граф сцены облачной скриптов Сетки
На схеме ниже обратите внимание, что иерархии сцены Unity и сцены облачных сценариев Сетки идентичны. Синие узлы в разделе сцены Unity представляют GameObjects; каждый GameObject имеет соответствующий преобразователь в графе сцены сценариев сетки. При обновлении TransformNode оно приводит к преобразованию игрового объекта, соответствующего в сцене Unity, для обновления до того же значения.
API облачного скрипта Сетки содержит типы, которые сопоставляют только подмножество полного набора компонентов Unity. Он по-прежнему действителен для создания сцены Unity с компонентами, с которыми не удается сопоставить API облачных сценариев Сетки; Они просто будут невидимыми для облачной скриптов Сетки. На схеме компонент с белым цветом имеет соответствующий узел в графе сцены сценариев сетки; Не является зеленым цветным компонентом. В графе сцены сценариев сетки нет узла системы частиц, поэтому в нашем примере компонент системы частиц в сцене Unity не будет отображаться в соответствующей сцене облачной скриптов Сетки. Однако его окружающие компоненты и объект игры принадлежат графу сцены Сетки Cloud Scripting. Это означает, что Сетка Cloud Scripting сможет перемещать систему частиц вокруг сцены, перемещая собственные игровые объекты, даже если сама система частиц невидима для облачной скриптов.
API облачной скриптов Сетки позволяет клонирование узлов. Если приложение делает клон "A" (который соответствует узлу "A", GameObjectParent, в сцене Unity), это клонирование всего дочернего дерева GameParentObject, в том числе сетки облачных сценариев сетки сетки.
Разработка облачных сценариев сетки
Подробные инструкции по работе с облачными скриптами Сетки можно найти в статье "Создание простого проекта облачного скрипта" и руководства программиста . Здесь мы предоставляем краткий обзор.
Типичный проект Unity, содержащий сцену с сеткой Cloud Scripting, будет выглядеть следующим образом на диске (папки отображаются как полужирные):
- Проект Unity
- Активы
- Сцены
- MyScene.unity
- . MeshCloudScripting
- MyScene
- MyScene.csproj
- Program.cs
- scene.map
- App.cs
- MyScene
- Сцены
- Активы
Каждая сцена в проекте Unity, содержащая компонент MeshCloudScripting, имеет соответствующую папку с тем же именем, который содержится в объекте ". Папка MeshCloudScripting в каталоге "Активы". Компонент Cloud Scripting сетки создает эту папку и его начальный набор файлов, которые будут компилироваться в полностью рабочая, хотя и пустая, облачная служба сценариев. Некоторые исходные файлы показаны выше. Program.cs
содержит стандартный код, который отвечает за следующие действия:
настройка IHostBuilder для запуска
App
службы.создание экземпляра IHost .
выполнение экземпляра
IHost
до завершения.
App.cs
— это класс, на котором размещена логика приложения. Он реализует интерфейс IHostedService , поэтому он имеет две точки входа: StartAsync
и StopAsync
. StartAsync
активируется один раз, когда IHost
служба готова к запуску App
службы. Кроме того, StopAsync
активируется при IHost
выполнении корректного завершения работы.
Представление сцены
Обратите внимание на файл scene.map в приведенном выше списке. Это внутренняя детализация, но полезно понять. При запуске вручную в пользовательском интерфейсе или при воспроизведения сцены Unity в редакторе компонент Mesh Cloud Scripting записывает файл scene.map в соответствующую папку Cloud Scripting Mesh Cloud. Это представление сцены в виде иерархии сцены в виде иерархии сцены в облаке сетки; Типы Unity преобразуются в типы Cloud Scripting Сетки. При развертывании в облаке облачной службы сценариев Сетки не требуется запустить исходную сцену Unity. Вместо этого он загружает файл scene.map , который определяет начальную иерархию сцены. Когда клиент Сетки подключается к службе облачных сценариев Сетки, он получает иерархию облачных сценариев Сетки и обновляет ее сцену Unity в соответствии с ней. Чтобы разрешить это, мы также сохраняем идентификаторы в привязках Cloud Scripting Сетки, которые используются для сопоставления с соответствующими объектами Unity в сцене.
Примечание. Для работы приведенного выше файла scene.map и сцены Unity должны соответствовать. Если по какой-то причине они не --например, в результате ошибки экспорта, это будет обнаружено, и служба облачных сценариев Сетки и клиент сетки не будет подключаться.
Среда публикации с помощью облачных сценариев Сетки
При публикации среды с помощью облачной скриптов Сетки она будет публиковать службу "Среда" и " Облачные скрипты сетки" в Azure. Это показано на схеме ниже:
При внесении изменений в сцену следует нажать клавишу Play в Unity, чтобы просмотреть сцену с помощью только что созданной и локально работающей службы облачных сценариев Сетки. Затем опубликуйте измененную среду с помощью средства отправки сетки. Публикация подробно описана в разделе "Сборка и публикация среды " и "Предоставление сведений об облачном скрипте" для статей о сборке и публикации .
Проверка подлинности в службе сценариев облака Сетки
Служба облачных сценариев может хранить список пользователей. После проверки подлинности пользователя служба облачных сценариев имеет постоянный идентификатор для пользователя в нескольких сеансах.
Тем не более чем поток проверки подлинности в Службе сценариев сетки не требует дополнительных усилий. Это полностью неявно, и стороны, участвующие в работе, чтобы получить маркер и проверить его автоматически.
Ниже приведены стороны, участвующие в потоке проверки подлинности:
Набор средств сетки: в качестве инструмента, с помощью которого службы облачных сценариев развертываются в облаке, можно выбрать Service Mode
службу облачной скриптов для проверки маркера проверки подлинности. Это можно сделать в параметре конфигурации среды в пользовательском интерфейсе средства отправки сетки.
Служба Microsoft Mesh: отвечает за выдачу маркера. Без маркера пользователи не могут взаимодействовать с облачным скриптом.
Microsoft Mesh: точка входа для взаимодействия пользователей с Сеткой Cloud Scripting. Клиент Microsoft Mesh отвечает за запрос маркера доступа от службы Microsoft Mesh от имени пользователя.
Служба сценариев сетки: проверяет маркер, полученный от запросов подключения к службе Microsoft Mesh, а затем выбирает постоянный идентификатор пользователя из маркера.
Стороны работают вместе, как показано ниже: