Unity熱更新04-XLua呼叫C#-06-Lua呼叫C# 過載方法
阿新 • • 發佈:2020-10-29
print("*********Lua呼叫C# 過載函式相關知識點***********") local obj = CS.Lesson6() --雖然Lua自己不支援寫過載函式 --但是Lua支援呼叫C#中的過載函式 print(obj:Calc()) print(obj:Calc(15, 1)) --Lua雖然支援呼叫C#過載函式 --但是因為Lua中的數值型別 只有Number --對C#中多精度的過載函式支援不好 傻傻分不清 --在使用時 可能出現意想不到的問題 print(obj:Calc(10)) print(obj:Calc(10.2)) --解決過載函式含糊的問題 --xlua提供瞭解決方案 反射機制 --這種方法只做瞭解 儘量別用 --Type是反射的關鍵類 --得到指定函式的相關資訊 local m1 = typeof(CS.Lesson6):GetMethod("Calc", {typeof(CS.System.Int32)}) local m2 = typeof(CS.Lesson6):GetMethod("Calc", {typeof(CS.System.Single)}) --通過xlua提供的一個方法 把它轉成lua函式來使用 --一般我們轉一次 然後重複使用 local f1 = xlua.tofunction(m1) local f2 = xlua.tofunction(m2) --成員方法 第一個引數傳物件 --靜態方法 不用傳物件 print(f1(obj, 10)) print(f2(obj, 10.2))