Inserito da: dsoft20 | Aprile 30, 2009

LUA+XNA

Piccola guida su come implementare il LUA in XNA:
- Inanzitutto scaricate il lua interface da qui http://luaforge.net/projects/luainterface/
- Aggiungere la dll “LuaInterface.dll” nei riferimenti

Poi nella finestra che si apre selezionate la scheda sfoglia e individuate il file “LuaInterface.dll”, fatto ciò copiate la “luanet.dll” nella cartella bin\debug

Ora passiamo al codice, inseriamo i riferimenti a luainterface
Codice

using using LuaInterface;

Fatto ciò creiamo l’interprete lua

Lua lua = new Lua();

Ora il tutto è quasi pronto per essere usato, l’unica cosa che manca per adesso è un metodo per chiamare una funzione C# dal lua.
Inanzitutto il requisito è che le funzioni siano dichiarate come pubblic, per poterle richiamare abbiamo due alternative, o inseriamo una lista manuale

Codice
lua.RegisterFunction(“Nome funzione da lua”,this,this.GetType().GetMethod(“Nome funzione”));

Nome funzione da lua, è il nome con cui la funzione sarà richiamata da uno script lua
this l’oggetto a cui si fa riferimento
Nome funzione, è il nome della funzione che vogliamo richiamare.

Oppure possiamo inserire una funzione che ci permette all’avvio di sapere quali funzioni sono richiamabili.
Richiede però using System.Reflection;
Codice

void Popolate_Lua_Functions()
{
//Array che contiene i metodi
MethodInfo[] m;
//Prendo la lista dei metodi
m=this.GetType().GetMethods();
//Scorro i metodi
for (int i=0;i<m.Length;i++)
{
//Controllo se nel nome metodo c’è la parola Microsoft, C# inserisce prima le
//funzioni create dall’utente, così non ci sono problemi di sicurezza
if (m[i].Name.Contains(“Microsoft”))
{
break;
}
//Registro la funzione richiamabile
lua.RegisterFunction(m[i].Name,this,this.GetType().GetMethod(m[i].Name));
}

}

Per eseguire uno script LUA da hard-disko fate
Codice
lua.dofile(“script.lua”)

Io per esempio nel mio script ho

Load_Level(‘levels\\stanza prova.cbs’)
n=1
c=3
if (n+c)>2 then

quit()

end

e quando lo eseguo carica il livello, e se la somma di n e c è maggiore di 2 esce dal gioco


Lascia un commento

La tua risposta:

Categorie