У меня есть Lua скрипт, который должен действовать как игровой компонент, например:Как создать объект lua в C++/Luabridge?
-- Enemy.lua
Enemy = {
health = 5,
name = "DefaultEnemyName",
onUpdate = function()
health = health - 1
end,
healEnemy = function(amount)
health = health + amount
print(health)
end
}
Я хочу, чтобы иметь возможность создать новый экземпляр этого таблицы/объекта и сохранить его в C++.
В настоящее время, если я создаю lua_State и загрузить скрипт дважды переменные являются общим в каждой таблице ...
Вывод будет выглядеть примерно так, если я исцеляю три различных врагов с точкой один здоровья:
Enemy1, healEnemy(): 6
Enemy2, healEnemy(): 7
Enemy3, healEnemy(): 8
Итак, мой вопрос: как создать тип экземпляра этой таблицы, не создавая много lua_States (что, по-видимому, плохое) в luabridge?
Заранее благодарен!
Спасибо, но в какой переменной я должен хранить переменную 'self' в C++ после того, как верну ее из скрипта? – Malaxiz
Взгляните на это [SO link] (http://stackoverflow.com/questions/1973788/tracking-lua-tables-in-c). Tom Nowell предоставляет ссылку, которая объясняет, как хранить ссылки на объекты lua на C++. Я не знаю, что именно вы пытаетесь сделать, но я не уверен, что вы можете напрямую преобразовать объект Lua в объект C++. Вы можете сохранить ссылку на объект, если это то, что вы действительно хотите, но я не вижу, как это может помочь. Возможно, вам потребуется провести некоторое исследование по доступу к данным из объектов класса lua. – malhotraprateek
Спасибо. Я закончил это следующим образом: https://imgur.com/kPLzfvC https://imgur.com/aaV3fOR – Malaxiz