2015-10-13 3 views
0

У меня есть 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?

Заранее благодарен!

ответ

0

Я думаю, вам нужно использовать классы lua. Посмотрите эту ссылку Lua Object Creation Tutorial

+0

Спасибо, но в какой переменной я должен хранить переменную 'self' в C++ после того, как верну ее из скрипта? – Malaxiz

+0

Взгляните на это [SO link] (http://stackoverflow.com/questions/1973788/tracking-lua-tables-in-c). Tom Nowell предоставляет ссылку, которая объясняет, как хранить ссылки на объекты lua на C++. Я не знаю, что именно вы пытаетесь сделать, но я не уверен, что вы можете напрямую преобразовать объект Lua в объект C++. Вы можете сохранить ссылку на объект, если это то, что вы действительно хотите, но я не вижу, как это может помочь. Возможно, вам потребуется провести некоторое исследование по доступу к данным из объектов класса lua. – malhotraprateek

+0

Спасибо. Я закончил это следующим образом: https://imgur.com/kPLzfvC https://imgur.com/aaV3fOR – Malaxiz

Смежные вопросы