LuaとC#の呼び出し
LuaInterfaceとは
LuaInterfaceは2つのコアライブラリを含み、1つはluaInterfaceである.一つはルアネットdll、LuaInterfaceでLuaとC#(CLR)間の相互呼び出しを完了できます.
プロジェクトを新規作成した後、圧縮パッケージのLUAInterface.dllとluanet.dll C#新規アイテムにドラッグ&ドロップし、参照にluainterfaceの参照を追加
C#でのアクセスLuaコードの実行
Lua lua = new Lua();//Lua解析器の作成
lua["num"]=2;//numを定義する
lua["str"]="a string";//文字列の定義
lua.newTable("tab");//テーブルtab={}の作成
lua環境での変数の取得
doublenum = (double)lua["num"];
string str = (string)lua["str"];
C#でLuaスクリプトファイル、またはスクリプト文字列を実行
lua.DoFile("script.lua");//scriptを実行します.luaスクリプト.スクリプトはC#エンジニアリングと同じディレクトリの下で、luaコードフォーマットはansiフォーマットです.フォルダはC#プロジェクトの下のdebuフォルダに入れます
lua.DoString("num=2");
lua.DoString("str='a string'");
object[] retVals = lua.DoString("return num,str");
ホットアップデートでは、luaスクリプトを解析するコードを書くだけで、c#コードは変更する必要はなく、luaスクリプトを修正するだけでいいので、luaスクリプトでゲームロジックを制御します.
CLRでC#メソッドをLuaに登録する
//クラス内の一般的なメソッドを登録する
1番目のパラメータはl変換後のluaのメソッド名で、2番目はC#のクラス名で、3番目はC#のメソッド名です.
//クラスの静的メソッドを登録する
Luaエディタでc#のクラスを使用する
require"luanet"はライブラリに導入され、ライブラリ内のメソッドを使用することができます.
--CLRのタイプをロードし、CLRオブジェクトをインスタンス化する
Luaのコード、luaはC#のクラスluainterfaceを呼び出します.exe luanet.exeインポートプロジェクトのdebugフォルダの下
C#の中のコード、C#はluaの方法の出力を呼び出します;
LuaでC#のクラスを使用してオブジェクトを作成すると、最適な構造方法が自動的に一致します.
LuaでのC#へのアクセスのプロパティとメソッド
Luaコードでは、C#オブジェクトの属性にアクセスする方法は、objのようにtableのキーインデックスにアクセスするのと同じである.nameまたはobj["name"]
Luaコードでは、C#オブジェクトの一般的な関数にアクセスする方法は、obj:method 1()などのtableを呼び出す関数と同じです.
LuaでC#にアクセスする方法-特殊な場合、戻り値が2つあることに注意してください.
関数にoutまたはrefパラメータがある場合、outパラメータはrefパラメータと関数の戻り値とともに返され、呼び出された場合、outパラメータは入力する必要はありません.
refパラメータは入力する必要があり、1つのtableに2つの値(value 1,value 2)が返されます.
リロード関数がある場合、呼び出し関数は最初に一致する関数と自動的に一致します.
get_を使用できますmethod_bysig関数C#で指定されたクラスの指定パラメータを得る関数の使い方
luaMethod= get_method_bysig(Obj,"CSharpMethod","System.String")
luaMethod("siki")
LuaにC#のイベント依頼を登録する(event delegate)
LuaでAddメソッドまたはRemoveメソッドを使用してLuaの関数を登録またはC#からのイベント依頼からログアウトします.
function method()
end
obj.SomeEvent:Add(methodname(引用符なし)
LuaInterfaceは2つのコアライブラリを含み、1つはluaInterfaceである.一つはルアネットdll、LuaInterfaceでLuaとC#(CLR)間の相互呼び出しを完了できます.
プロジェクトを新規作成した後、圧縮パッケージのLUAInterface.dllとluanet.dll C#新規アイテムにドラッグ&ドロップし、参照にluainterfaceの参照を追加
C#でのアクセスLuaコードの実行
Lua lua = new Lua();//Lua解析器の作成
lua["num"]=2;//numを定義する
lua["str"]="a string";//文字列の定義
lua.newTable("tab");//テーブルtab={}の作成
lua環境での変数の取得
doublenum = (double)lua["num"];
string str = (string)lua["str"];
C#でLuaスクリプトファイル、またはスクリプト文字列を実行
lua.DoFile("script.lua");//scriptを実行します.luaスクリプト.スクリプトはC#エンジニアリングと同じディレクトリの下で、luaコードフォーマットはansiフォーマットです.フォルダはC#プロジェクトの下のdebuフォルダに入れます
lua.DoString("num=2");
lua.DoString("str='a string'");
object[] retVals = lua.DoString("return num,str");
ホットアップデートでは、luaスクリプトを解析するコードを書くだけで、c#コードは変更する必要はなく、luaスクリプトを修正するだけでいいので、luaスクリプトでゲームロジックを制御します.
CLRでC#メソッドをLuaに登録する
//クラス内の一般的なメソッドを登録する
1番目のパラメータはl変換後のluaのメソッド名で、2番目はC#のクラス名で、3番目はC#のメソッド名です.
Lua lua = new Lua();
Program p=new Program();
lua.RegisterFunction("LuaMethod", p, p.GetType().GetMethod("CLRMethod"));
lua.DoString("LuaMethod()");
Console.ReadKey();
public void CLRMethod()
{
Console.WriteLine(" C# LUA");
}
//クラスの静的メソッドを登録する
Lua lua = new Lua();
lua.RegisterFunction("CToLua", null, typeof(Program).GetMethod("MyStaticMethod"));
lua.DoString("CToLua()");
Console.ReadKey();
public static void MyStaticMethod()
{
Console.WriteLine(" C# lua");
}
Luaエディタでc#のクラスを使用する
require"luanet"はライブラリに導入され、ライブラリ内のメソッドを使用することができます.
--CLRのタイプをロードし、CLRオブジェクトをインスタンス化する
Luaのコード、luaはC#のクラスluainterfaceを呼び出します.exe luanet.exeインポートプロジェクトのdebugフォルダの下
require "luanet"
luanet.load_assembly("System")//
num=luanet.import_type("System.Int32")//
print(num)
C#の中のコード、C#はluaの方法の出力を呼び出します;
Lua lua = new Lua();
lua.DoFile("LuaUseScript.lua");
Console.ReadKey();
LuaでC#のクラスを使用してオブジェクトを作成すると、最適な構造方法が自動的に一致します.
LuaでのC#へのアクセスのプロパティとメソッド
Luaコードでは、C#オブジェクトの属性にアクセスする方法は、objのようにtableのキーインデックスにアクセスするのと同じである.nameまたはobj["name"]
Luaコードでは、C#オブジェクトの一般的な関数にアクセスする方法は、obj:method 1()などのtableを呼び出す関数と同じです.
luanet.load_assembly("lelelua")
Program=luanet.import_type("lelelua.Program")
program1=Program()
print(program1.name)
program1:TestMethod()
public string name = " ";
public void TestMethod()
{
Console.WriteLine("C# ");
}
LuaでC#にアクセスする方法-特殊な場合、戻り値が2つあることに注意してください.
luanet.load_assembly("lelelua")
Program=luanet.import_type("lelelua.Program")
program1=Program()
void,strlength=program1:TestOut("leleaixuexi")
print(strlength)
public void TestOut(string name, out int count)
{
count = name.Length;
}
関数にoutまたはrefパラメータがある場合、outパラメータはrefパラメータと関数の戻り値とともに返され、呼び出された場合、outパラメータは入力する必要はありません.
refパラメータは入力する必要があり、1つのtableに2つの値(value 1,value 2)が返されます.
リロード関数がある場合、呼び出し関数は最初に一致する関数と自動的に一致します.
get_を使用できますmethod_bysig関数C#で指定されたクラスの指定パラメータを得る関数の使い方
luaMethod= get_method_bysig(Obj,"CSharpMethod","System.String")
luaMethod("siki")
LuaにC#のイベント依頼を登録する(event delegate)
LuaでAddメソッドまたはRemoveメソッドを使用してLuaの関数を登録またはC#からのイベント依頼からログアウトします.
function method()
end
obj.SomeEvent:Add(methodname(引用符なし)