Hi niedo, freut mich das es dir was bringt.
Ehrlich gesagt benutze ich Lua mit C++ nicht wirklich ( hab manchmal damit probiert aber noch nichts weiterführendes).
Den Link hab ich durch Google gefunden und ein kurzes durchlesen schien genau das zu bringen was du wolltest.
Ich selbst benutze Lua mit C# über das Luainterface.
Zum Link.
Die machen nichts anderes als eine Klasse in C++ zu definieren und eine Wrapperklasse zu schreiben, welche sich dann um den Austausch zwischen Lua und der C++ Klasse kümmert.
Für Spiele ist dieses Beispiel allerdings perfekt da sie im C++ Code ein Objekt erstellen und in Lua als globale/globales Variable/Objekt zugänglich machen.
Die entscheidende Pasage wie das Objekt in Lua landet ist,
|
C-/C++-Quelltext
|
1
2
3
4
|
// Push a pointer to this GameObject to the Lua stack
lua_pushlightuserdata(L, (void*)&temp);
// And set the global name of this pointer
lua_setglobal(L,"gameobject");
|
, zu finden in der Erklärung der Datei
main.cpp
Zu OOP in Lua.
Unter der Voraussetzung das du das Objekt wie im beispiel in C++ erzeugt hast und es in Lua 'nur' benutzt kannst du folgendes machen.
Eine Methode aufrufen
|
Quellcode
|
1
2
3
4
5
|
-- Ohne Parameter
Referenzname:Methodenname()
-- Mit Parameter
Referenzname:Methodenname(1234 , "Test")
|
Ein öffentliches Attribut verwenden
|
Quellcode
|
1
2
3
4
5
|
-- Einen Wert setzen
Referenzname.Attributname = "Hallo Welt"
-- Einen Wert auslesen
meineVariable = Referenzname.Attributname
|
Ich hoffe das hat noch was gebracht. Wenn nicht, schreib mal an welchem Teil es hängt.
Grüße
EDIT: Hier noch ein gutes
online Buch, leider aber nur für Lua in C und daher ohne OOP. OOP wird in diesem
Artikel beschrieben.