Ce que j'essaie de faire :
someTable={
function Add(a,b)
return a+b
end
function Mult(a,b)
return a*b
end
function CallFunc(name,inputs)
funcByName(table.unpack(inputs))
end
}
Et ensuite je peux l'appeler depuis C# :
void Call(string name, params object[] inputs)
Et la question est : comment appeler une fonction par le nom d'une chaîne de caractères ?
De même, CallFunc sera dans metatable.
S'il existe un autre moyen de résoudre le problème, j'aimerais le savoir.
(Désolé pour le formatage mais j'écris depuis un téléphone pour une raison quelconque)
Edit : C'était stupide de ma part de poser la question. Ce que j'essayais de faire est d'accéder à une "fonction membre" par son nom. Ce n'est pas vraiment comme ça que fonctionne Lua. Donc la réponse est simple :
function CallFunc(self, name, ...)
self[name](...)
end
Et en C# :
void CallLuaFunc(LuaTable tb,string name,params object[] inputs){
//call lua from c#
}
Ainsi, le programme principal c# ne doit être compilé qu'une seule fois puisqu'il peut appeler n'importe quelle fonction lua par son nom.
(BTW la bibliothèque est XLua, une bibliothèque lua pour Unity3D pour permettre le hotfix)