Я хочу зарегистрировать динамические переменные C# в движке сценариев Lua.Зарегистрируйте динамические переменные C# в Lua
Я попробовал (пример :) luaVM["PlayerHealth"] = gameValues.PlayerHealth
. Как и ожидалось, переменная, по общему признанию, добавляется в таблицу глобальной переменной, но во время выполнения сценария Lua она сохраняет свое начальное значение, например. 100. Так что я могу только обучать двигателю разные игровые значения один раз перед выполнением скрипта.
Но я хочу, чтобы двигатель знал текущее значение gameValues.PlayerHealth
во время выполнения скрипта, так как PlayerHealth
естественно изменяется.
Я мог бы зарегистрировать функцию, которая возвращает текущее значение, но это выглядит своего рода неловко:
if (PlayerHealth() == 50) then ... end (looks stupid)
Вместо:
if (PlayerHealth == 50) then ... end (looks cool)
Я действительно не знаю, что искать, так что помочь будет очень признателен. Не стесняйтесь спрашивать все, что вам нужно знать.
Глобальная среда представляет собой таблицу в формате lua 5.1, поэтому вы можете использовать любые трюки метаданных, которые вы хотите использовать для прокси-поиска и т. Д. Подобные трюки возможны с использованием '_ENV' в lua 5.2 и 5.3. –
Неважно, как выглядит ваш код, если он логически звучит и управляем. – hjpotter92
Я передал объект Lua в другой поток, который обновляет такие переменные: – chris2k15