SLua學習紀錄,取得returen function 值

  • 125
  • 0
  • C#
  • 2019-05-02

c#取Lua值紀錄

最近在專案上要使用Lua去做熱更新

所以研究了一下Lua的寫法 以及C#跟Lua的互調

Lua程式碼

function getString()
	local x = "aaa"
	return x
end

c#取得值程式碼

Lua m_lua = new Lua();
string str =Convert.toString(m_lua.GetFunction("getString").Call());

假如Lua程式碼為閉包

function num()
	local i = -1

	return function ()
			i=i+1
		return i
	end
end

在這樣情況下 c#取值

Lua m_lua = new Lua();
int num = Convert.toInt32(m_lua.GetFunction("num").Call());

會報出 InvalidCastException: Specified cast is not valid. 錯誤訊息

必須要更改Lua寫法

function getNum()
	local n = num()
	return n()
end

c#改為

Lua m_lua = new Lua();
int num = Convert.toInt32(m_lua.GetFunction("getNum").Call());

這樣才取得到值