Чтобы взаимодействовать между Unity и JavaScript, вы можете использовать механизм `Application.ExternalCall` или `Application.ExternalEval` для вызова JavaScript-функций из Unity.
Вот пошаговая инструкция по интеграции VK Bridge в ваш Unity проект:
### 1. Создайте JavaScript функции
Сначала создайте JavaScript функции, которые будут вызываться из Unity и будут взаимодействовать с VK Bridge. Добавьте следующий код в ваш HTML файл, где загружается ваш WebGL проект.
```html
<script>
function saveToVK(key, value) {
bridge.send('VKWebAppStorageSet', { key: key, value: value })
.then((data) => {
if (data.result) {
console.log("Данные сохранены успешно");
}
})
.catch((error) => {
console.error("Ошибка сохранения данных:", error);
});
}
function loadFromVK(keys) {
bridge.send('VKWebAppStorageGet', { keys: keys })
.then((data) => {
if (data.keys) {
console.log("Значения получены:", data.keys);
// Здесь вы можете вызвать метод Unity для передачи данных обратно
// Например, можно использовать: unityInstance.SendMessage("GameObjectName", "MethodInUnity", value);
}
})
.catch((error) => {
console.error("Ошибка загрузки данных:", error);
});
}
</script>
```
### 2. Вызов JS из Unity
Теперь вы можете использовать C# скрипты в Unity для вызова этих JavaScript функций:
```csharp
using UnityEngine;
public class VKStorageManager : MonoBehaviour
{
private const string HIGH_SCORE_KEY = "HighScore";
public void SaveHighScore(int score)
{
string jsonValue = JsonUtility.ToJson(new { score = score });
Application.ExternalCall("saveToVK", HIGH_SCORE_KEY, jsonValue);
}
public void LoadHighScore()
{
Application.ExternalCall("loadFromVK", new string[] { HIGH_SCORE_KEY });
}
// Этот метод будет вызван из JavaScript, когда данные будут загружены
public void ReceiveHighScore(string jsonValue)
{
// Обработка полученных данных
var data = JsonUtility.FromJson<HighScoreData>(jsonValue);
Debug.Log("Загруженный рекорд: " + data.score);
}
[System.Serializable]
public class HighScoreData
{
public int score;
}
}
```
### 3. Загрузка данных
Когда вы вызываете метод `LoadHighScore`, он отправит запрос на получение данных по ключу `HIGH_SCORE_KEY`. Когда данные будут получены, вы можете вызвать функцию `ReceiveHighScore`, чтобы обработать их в Unity.
### 4. Пример вызова сохранения
После того как игрок достиг нового рекорда, вы можете сохранить его следующим образом:
```csharp
int score = 100; // Пример текущего счета
SaveHighScore(score);
```
### Заключение
Вам необходимо убедиться, что ваши JavaScript функции находятся в контексте загруженной страницы и доступны для вызова. Таким образом, ваша игра в Unity будет записывать и получать данные из VK Bridge, что обеспечит сохранение рекордов на платформе ВКонтакте.