Найти в Дзене

№152. Подключаем JavaScript.

ВАЖНО !
В Godot 4 заменено на JavaScriptBridge.
В этой статье покажу как подружить Godot cо скриптами Javascript. В рамках статьи я не буду концентрироваться на самом javascript, подразумевается, что если вы читаете эту статью то вы знакомы с джаваскриптом. Первое что сделаем — добавим в проект Label и Button.
Соответственно будем нажимать на кнопку и либо отправлять какие то данные , либо получать. И второе — подключим темплеит экспорта в HTML5.
(если у вас его нет — годо предложит вам его установить) После этого у вас в верхнем меню добавится новая кнопочка. Итак, всё готово для написания кода. В годо для работы с Javascript кодом есть отдельный класс, он так и называется — JavaScript. Как мы видим из описания, работает он только с HTML5 по понятным причинам. Ну и позволяет нам обрабатывать какие то скрипты или связываться со сторонними API (например ВК или Яндекс). Подключаем новый скрипт. Подключаем сигнал с кнопки.
И для начала просто выведем какой то текст в Print. Нажимаем на к

ВАЖНО !
В Godot 4 заменено на JavaScriptBridge.


В этой статье покажу как подружить
Godot cо скриптами Javascript.

В рамках статьи я не буду концентрироваться на самом javascript, подразумевается, что если вы читаете эту статью то вы знакомы с джаваскриптом.

Первое что сделаем — добавим в проект Label и Button.
Соответственно будем нажимать на кнопку и либо отправлять какие то данные , либо получать.

И второе — подключим темплеит экспорта в HTML5.
(если у вас его нет — годо предложит вам его установить)

-2

После этого у вас в верхнем меню добавится новая кнопочка.

-3

Итак, всё готово для написания кода.

В годо для работы с Javascript кодом есть отдельный класс, он так и называется — JavaScript.

-4

Как мы видим из описания, работает он только с HTML5 по понятным причинам. Ну и позволяет нам обрабатывать какие то скрипты или связываться со сторонними API (например ВК или Яндекс).

Подключаем новый скрипт. Подключаем сигнал с кнопки.
И для начала просто выведем какой то текст в Print.

-5

Нажимаем на кнопку со значком HTML5 затем Run in Browser, после чего у вас откроется ваш дефолтный браузер. Я использую Chrome, поэтому всё дальнеишее будет из него.

-6

Если сейчас нажать на нашу кнопку, то наш принт выведет «dd» в консоль Chrome.
Открываем консоль.

-7

Наблюдаем там наш текст.

-8

Вроде пока всё работает. Теперь будем подключать джаваскрипт.
Для этого открываем экспортер, и находим окно
Head Include.
Весь код из этого окна при экспорте добавляется в
html фаил всего вашего проекта, и мы в последствии можем к нему обращаться.

Напишем простенький скрипт который будет содержать всего одну переменную.

-9

Возвращаемся в скрипт годо. И вместо вывода в print пишем код для обработки уже непосредственно нашего джаваскрипт кода.

Для того чтобы получить весь код с html странички используется интерфеис window.
После чего мы просто берем значение нашей переменной
info из джаваскрипта.

-10

Запускаем, и видим что всё отработалось.

-11

Мы так же можем выполнять функции в джаваскрипте из скрипта годо.
Для примера я вписал функцию которая возвращает нам значение переменной
some.

-12

И обращаюсь из годо уже непосредственно в эту функцию.

-13

В итоге получаем результат.

-14

В следующем примере рассмотрим такую штуку как колбеки.
Допустим у нас есть джаваскрипт, который срабатывает не моментально. И результат его работы нам надо передать в годо.
Для примера я написал скрипт который делает задержку в 2 секунды , и затем меняет нашу переменную test.

-15

Для того чтобы принять результат этой функции, мы можем использовать метод create_callback().

-16

Выносим колбек в переменную, после чего вызываем её в качестве аргумента при запуске функции из джаваскрипта.

-17

Ну и собственно прописываем саму функцию которая будет вызвана в годо.

JS возвращает нам данные в виде массива. Поэтому тут берется нулевой индекс.
JS возвращает нам данные в виде массива. Поэтому тут берется нулевой индекс.

Теперь, запустив это всё в браузере можем увидеть результат работы этой всей связки.

-19

В общем и целом это наверное всё.

-20

Надеюсь принцип вы поняли. За сим всё, удачной разработки !
Подписывайтесь на канал,
вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !

#godot #gdscript #игровой движок #программирование #уроки