Добавление приложения Unity на сайт + отправка данных о результатах игры на сервер

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Содержание

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

Решение. На странице сайта разместить iframe с приложением, добавить скрипт для отправки AJAX-запроса. Перед сохранением в Unity, нужно добавить в скрипт нашего WebGL-приложения функцию, которая будет вызвать функцию AJAX-запроса которая будет находиться на сайте (не в игре). В принципе, способ подходит не только для WordPress, а и для любой реализации сайта.

Настройка сборки Unity для WebGlНастройка сборки Unity для WebGl
Изображении 0: Схема передачи данных из WebGL Unity-приложения на сервер сайта для обработки

Алгоритм сохранения и добвления приложения Unity на сайт

1. Вызвать JS-функцию при завершении игрового процесса

Если у нас есть готовый проект приложения в Unity, то нам необходимо добавить в скрипт C# фнкцию, которая будет вызывать нашу JavaScript-функцию на сайте для отправки каких-то данных из игры на сервер. Для этого в Unity есть метод Application.ExternalEval("customJsFunction()"). Здесь customJsFunction — JavaScript-функция, которая будет вызываться из документа страницы. Пример в Код 1.1.

Код №1: Пример C#-скрипта в Unity в моменте завершения игры и вызове функции на сайте

В Код 1 приведен пример кода из квиз-игры, где смысл такой — мы ответили на вопрос, если есть еще вопросы, то продолжаем, а если вопросов больше нет, то запустить JS-функцию sendResaultUnity(true) и далее — скрипт завершения игры. Если условия завершения игры разные, например, проиграл или выиграл, то можно вызвать функци в зависимости от условия и передать в нее разные параметры.

Важный момент! Функцию нужно вызывать как window.top.sendResaultUnity(true), т.к. приложение на сайте будет находиться в iframe, а функция отправки данных вне фрейма.

2. Создание сборки игры для WebGL

File — Build Settings, добавить сцены, выбрать платформу WebGL и запустить процесс сборки «Build and Run». Настройки для сборки в Изображении 1.1. Не у верен, но отключал «Compression Format» в «Player Settings» (Изображении 1.2).

Настройка сборки Unity для WebGlНастройка сборки Unity для WebGl
Изображении 1.1: Настройка сборки приложения Unity для WebGL
Настройка плеера UnityНастройка плеера Unity
Изображении 1.2: Compression Format в Player Settings

3. Загрузка сборки игры на сервер

Создаем на сервере папку для игры, например в корне сайта — «my-unity-game». И загружаем в нее файлы сборки. В моем случае получилось, как в Изображении 3.

Настройка плеера UnityНастройка плеера Unity
Изображении 3: Файлы сборки приложения в Unity3D

4. Вывод приложения Unity на сайте

Выводим игру через iframe на странице или шаблоне сайта — Код №4.

Код №4: Вывод Unity игры на сайте через iframe

5. Скрипт AJAX-запроса отправки данных на сервер

Создаем функцию sendResaultUnity из п.1, которая будет отправлять данные на сервер о результате игры (Код №5). Ее мы должны были уже добавить на вызов при завершении игры в самом приложении. Файл (/wp-admin/admin-ajax.php) для AJAX-запрос.

Код №5: AJAX-запрос
Запрос отправляется с помощью jQuery, поэтому он должен быть подключен на сайте.

6. Обработка AJAX-запроса

Чтобы создать обработчик запроса для всех пользователей: авторизованных и нет необходимо использовать два хука wp_ajax_(action) и wp_ajax_nopriv_(action) (action — это ‘unity_ajax’, который передаем в запросе вместе с параметром). К ним будет цепляться наша функция, которая будет обрабатывать запрос. Вставляем Код №6 в functions.php. Здесь, для примера, мы просто проверяем переданный параметр и в зависимости от его значения отправляем обратно — пройден тест или нет.

Код №6: Функция обработки AJAX-запроса в functions.php
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии