void Start() { LuaState lua = new LuaState(); lua.Start(); lua["Objs2Spawn"] = 5; lua.DoString(script); //通过LuaState访问 Debugger.Log("Read var from lua: {0}", lua["var2read"]); Debugger.Log("Read table var from lua: {0}", lua["varTable.default"]); LuaFunction func = lua["TestFunc"] as LuaFunction; func.Call(); func.Dispose(); //cache成LuaTable进行访问 LuaTable table = lua.GetTable("varTable"); Debugger.Log("Read varTable from lua, default: {0} name: {1}", table["default"], table["map.name"]); table["map.name"] = "new"; Debugger.Log("Modify varTable name: {0}", table["map.name"]); table.AddTable("newmap"); LuaTable table1 = (LuaTable)table["newmap"]; table1["name"] = "table1"; Debugger.Log("varTable.newmap name: {0}", table1["name"]); table1.Dispose(); table1 = table.GetMetaTable(); if (table1 != null) { Debugger.Log("varTable metatable name: {0}", table1["name"]); } object[] list = table.ToArray(); for (int i = 0; i < list.Length; i++) { Debugger.Log("varTable[{0}], is {1}", i, list[i]); } table.Dispose(); lua.CheckTop(); lua.Dispose(); }
public void Init(LuaTable tb) { mLuaState = SimpleLuaClient.GetMainState(); if (mLuaState == null) return; if (tb == null) { mLuaTable = mLuaState.GetTable(name); } else { mLuaTable = tb; } if (mLuaTable == null) { Debug.LogWarning("mLuaTable is null:" + name); return; } mLuaTable["gameObject"] = gameObject; mLuaTable["transform"] = transform; mLuaTable["lua_behaviour"] = this; LuaFunction awakeFunc = mLuaTable.GetLuaFunction("Awake") as LuaFunction; if (awakeFunc != null) { awakeFunc.BeginPCall(); awakeFunc.Push(mLuaTable); awakeFunc.PCall(); awakeFunc.EndPCall(); awakeFunc.Dispose(); awakeFunc = null; } mUpdateFunc = mLuaTable.GetLuaFunction("Update") as LuaFunction; mFixedUpdateFunc = mLuaTable.GetLuaFunction("FixedUpdate") as LuaFunction; mLateUpdateFunc = mLuaTable.GetLuaFunction("LateUpdate") as LuaFunction; }
public void SetLuaTable(LuaTable tb) { mLuaState = SimpleLuaClient.GetMainState(); if (mLuaState == null) return; if (tb == null) { mLuaTable = mLuaState.GetTable("NetworkManager"); } else { mLuaTable = tb; } if (mLuaTable == null) { Debug.LogWarning("NetworkManager is null:"); return; } else { mLuaOnSocketDataFunc = mLuaTable.GetLuaFunction("on_socket_data") as LuaFunction; } }