Как в Годот сделать Level Script без написания сложного кода?
Например подходим к NPC и включается скрипт:Talk («Привет!»);
Talk («Вот тебе в подарок 1000$, просто так!»);
Money (+1000);
Как сделать так, чтобы в этом скрипте ставилось на паузу пока не закончится следующий диалог?
В юнити я использовал сложный код с text.Split (««), разбивал код на слова, может в годоте можно проще сделать?
- 13 октября 2019, 12:40
- 00
Добавляй эти действия в массив-очередь (вызовом своих вот этих функций из поста), а потом "воспроизводи" эту очередь по порядку по щелчку мыши или как там у тебя
Спасибо!)
вызов функции через String? забыл как это делается)
надо загуглить, я кажется недавно видел, и может даже спрашивал, но уже забыл)
пока не попрактикуюсь с этим кодом, буду забывать)
надо срочно какой-нибудь мини код написать, чтоб в голове закрепилось)
Можно хранить указатель на функцию и параметры к ней.
В конце концов:
Чтобы ссылаться на функцию по имени во время выполнения (например, чтобы сохранить ее в переменной или передать ее другой функции в качестве аргумента), необходимо использовать помощники
call
илиfuncref
:Ну я имел в виду, что эти твои функции ничего не делают, кроме добавления себя в массив. А по щелчку достаёшь элемент из массива и смотришь, что там надо сделать, это можно обычным match.
В принципе, yield тоже есть в годоте, но я так пока и не придумал, где он мне нужен)
Задержка выполнения функции по таймеру. Для выстрелов
А зачем выстреливать потом с задержкой, если можно выстреливать сразу когда пора выстреливать?..
Эмитируя перезарядку
А в Годот есть yield не по времени, а по нажатию кнопки или изменению какой-то переменной?
то есть тупо код дальше не идёт, пока не нажата кнопка или не изменена переменная
Да есть
А yield можно использовать не по времени, а когда какая-нибудь особая переменная изменится?
тогда может быть много полезных применений, тот же скрипт с диалогом)
Я так понял, функция ставит сама себя на паузу на контрольных точках, а потом её можно продолжить, когда тебе удобно.
ещё бы понять как такие штуки отключать, если вдруг нужно сбросить Yield) пошёл гуглить, может там можно найти вариант
Далеко не уходи: https://docs.godotengine.org/ru/latest/getting_started/scripting/gdscript/gdscript_basics.html#coroutines-with-yield
О! Спасибо)
Еще пример:
Шикарно) Спасибо)
А можно точно такой же код написать, но вместо проверки анимации, была бы проверка переменной?
Например переменная у врага: robbed , то есть враг не исчезнет пока мы не ограбим его карманы, а как ограбим то
robbed = true;
и теперь можно было бы удалять врага, но только используя корутину, а не обычным методом,
хотелось бы глянуть на код корутины, где есть зависимость от переменной,
ибо в этих примерах, я вроде не нашёл подобное
https://docs.godotengine.org/ru/latest/getting_started/scripting/gdscript/gdscript_basics.html#coroutines-with-yield
Внутри класса только if. Если из другого класса, то в голову приходит только использование setget: https://docs.godotengine.org/ru/latest/getting_started/scripting/gdscript/gdscript_basics.html#setters-getters
Или сигналы.