Для передачи данных из браузера в игру, созданную на Godot, можно использовать JavaScript-мост, который позволяет взаимодействовать между кодом Godot и кодом JavaScript. Godot предоставляет специальный интерфейс для этого через глобальную переменную `EMSCRIPTEN` (для HTML5 экспорта).
Вот пошаговое руководство о том, как передавать данные из браузера в Godot:
---
### 1. **Подготовка Godot**
В вашем Godot-проекте создайте функцию, которая будет принимать данные от JavaScript. Для этого используйте метод `export()` или просто определите функцию в скрипте.
Пример Godot-скрипта:
```gdscript
extends Node
func _ready():
# Инициализация игры
# Функция для получения данных из JavaScript
func receive_data(data: String):
print("Получены данные из JavaScript:", data)
```
Эта функция будет вызываться из JavaScript, чтобы передать данные в Godot.
---
### 2. **Настройка JavaScript-моста**
При экспорте проекта для HTML5, Godot создаёт глобальную переменную `Module`, которая позволяет взаимодействовать с игрой через JavaScript. Вы можете вызывать функции Godot напрямую через эту переменную.
Пример JavaScript-кода для передачи данных в Godot:
```javascript
// Получаем доступ к модулю Godot
var Module = {
preRun: [],
postRun: [],
print: (text) => console.log(text),
printErr: (text) => console.error(text),
canvas: document.getElementById('game-container') // Укажите ID контейнера игры
};
// Функция для отправки данных в Godot
function sendDataToGodot(data) {
if (typeof Module !== 'undefined' && typeof Module.call != 'undefined') {
// Вызываем функцию Godot через call()
Module.call('receive_data', [data]);
} else {
console.error('Модуль Godot не загружен!');
}
}
// Пример использования
sendDataToGodot("Hello from JavaScript!");
```
Здесь:
- `Module.call('receive_data', [data])` — вызывает функцию `receive_data` в Godot и передаёт ей аргументы.
- `data` — это строка, которую вы хотите передать в Godot.
---
### 3. **Обработка данных в Godot**
В Godot функция `receive_data` будет автоматически вызвана с переданными данными. Вы можете обрабатывать их так, как вам нужно.
Пример:
```gdscript
func receive_data(data: String):
print("Получено сообщение:", data)
# Здесь можно выполнить любые действия с полученными данными
```
---
### 4. **Передача данных из Godot в JavaScript**
Если вам также нужно передавать данные из Godot в JavaScript, вы можете использовать функцию `JavaScript.eval()`. Например:
Пример Godot-скрипта:
```gdscript
func send_data_to_js(data: String):
var js_code = "window.receiveDataFromGodot('" + data + "');"
JavaScript.eval(js_code)
```
Затем в JavaScript определите функцию `receiveDataFromGodot`:
```javascript
function receiveDataFromGodot(data) {
console.log("Получено сообщение из Godot:", data);
}
```
---
### 5. **Тестирование**
Чтобы протестировать взаимодействие:
1. Экспортируйте свой проект для HTML5.
2. Разместите все файлы (HTML, JS, WASM) на сервере.
3. Откройте страницу в браузере и проверьте консоль (`F12`) на наличие вывода данных.
---
### Важные замечания
- **Типы данных**: При передаче данных между Godot и JavaScript следует помнить, что Godot поддерживает только базовые типы данных (например, строки, числа). Если вам нужно передавать сложные структуры, используйте JSON.
- **Асинхронность**: Если данные передаются асинхронно, убедитесь, что они обрабатываются корректно в обоих направлениях.
- **Безопасность**: Если данные приходят из внешних источников, обязательно проверяйте их на валидность, чтобы избежать уязвимостей.
---
Теперь вы можете свободно обмениваться данными между Godot и JavaScript!