Чтобы передать значения из JavaScript (веб-приложения, основанного на WebGL) в C# (Unity), вам нужно использовать механизм передачи сообщений, предоставляемый Unity, который позволяет взаимодействовать между JavaScript и C#.
Вот пошаговая инструкция, как это сделать:
### Шаг 1: Используйте JavaScript для отправки сообщения в Unity
В вашем JavaScript-коде вы можете использовать следующие функции для отправки сообщения в C#:
```javascript
// Пример определения переменной highScore
let highScore = { value: 100 }; // вместо 100 подставьте актуальное значение
// Функция для отправки значения в Unity
function sendHighScoreToUnity() {
// Если Unity загружена
if (typeof (unityInstance) !== 'undefined') {
unityInstance.SendMessage('GameManager', 'ReceiveHighScore', highScore.value);
} else {
console.log('Unity не загружена');
}
}
// Вызов функции для отправки значения
sendHighScoreToUnity();
```
Здесь `unityInstance` — это ссылка на ваш экземпляр Unity, которая создается автоматически при загрузке WebGL-игры.
### Шаг 2: Создайте C# скрипт в Unity для получения сообщений
Создайте новый C# скрипт в Unity (например, `GameManager.cs`) и добавьте метод, который будет получать данные:
```csharp
using UnityEngine;
using UnityEngine.UI; // Импортируем для работы с UI
public class GameManager : MonoBehaviour
{
public Text highScoreText; // Ссылка на текстовое поле, где будет отображаться значение
// Метод для получения значения high score из JavaScript
public void ReceiveHighScore(string highScore)
{
// Отображаем значение в текстовом поле
highScoreText.text = "HighScore: " + highScore;
Debug.Log("Получен HighScore: " + highScore); // Логируем для проверки
}
}
```
### Шаг 3: Подключите текстовое поле в Unity
1. Перейдите в Unity и создайте текстовое поле (UI -> Text).
2. Назначьте переменную `highScoreText` в вашем скрипте (переместите текстовое поле в соответствующее поле в инспекторе).
### Шаг 4: Сборка и тестирование
Теперь, когда вы соберете ваше приложение для WebGL и откроете его в веб-браузере, функция в JavaScript должна успешно отправить значение высоких очков в Unity, а ваш текст в текстовом поле будет обновлен.
### Примечания
- Убедитесь, что имя объекта (`GameManager` в примере) и маршрут метода совпадают. C# метод `ReceiveHighScore` должен быть публичным и в одном из активных компонентов объекта.
- Проверяйте консоль на наличие сообщений и ошибок, если что-то не работает как ожидалось.
- Обратите внимание, что передаваемое значение будет в формате `string`. Если вам нужно работать с числами, вы можете конвертировать его в `int` или `float` на стороне C#.