首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将表参数从NLUA函数传递给C#方法?

如何将表参数从NLUA函数传递给C#方法?
EN

Stack Overflow用户
提问于 2022-03-29 11:20:42
回答 1查看 194关注 0票数 0

我在一个C#项目中使用NLUA。我使用以下代码注册一个C#方法,以便在LUA (NLUA)环境中可用(和工作):

代码语言:javascript
复制
// C# code to register the methoin LUA environment:
Lua state = new Lua();
state["MyLog"] = new LuaLog();

// C# Class and Method:
public class LuaLog {
  public void write(string aLog) {
      LogManager.addLog(aLog);
  }
}

--LUA CODE TO CALL C# METHOD:
MyLog:write("This is a log string")

好吧,我想调用"MyLog:write()“,但是传递一个表,而不是一个字符串。例如:

代码语言:javascript
复制
MyLog:write( {LogText="This is a log string", LogType="INFO"} )

有可能吗?如何编写C#方法将该参数作为表读取?我试过:

代码语言:javascript
复制
// C# CODE:
public void write(Dictionary<string, string> aLog)

public void write(List<string> aLog)

但什么都不管用。你能帮帮我吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-03-30 10:49:41

实际例子:

代码语言:javascript
复制
public class Example {
    public Dictionary<string, string> MethodCalledFromLua(Object aInput) {
    
      //
      // READ LUA ARGUMENTS WITH THE PROPER TYPE
      //
      if(aInput is LuaTable) {
        LuaTable theLuaTable = aLuaTable as LuaTable;
        Console.WriteLine("LUA TABLE: " + theLuaTable["name"] + " --> " + theLuaTable["surname"]);
      }
    
      if(aInput is string) {
        string theString = aInput as string;
        Console.WriteLine("STRING: " + theString);
      }
    
      //
      // RETURN A DICTIONARY TO LUA (NLUA)
      // (remember that LUA is case-sensitive!)
      //
      Dictionary<string, string> ret = new Dictionary<string, string>();
    
      Dictionary<string, object> editor = FormsManager.newEditor(); 
      ret["DATA_1"] = "My Name";
      ret["DATA_2"] = "My Last Name";
    
      return ret;
        }
      }

从C#注册NLUA类:

代码语言:javascript
复制
luaState["MyExample"] = new Example();

LUA代码:

代码语言:javascript
复制
local ret = MyExample:MethodCalledFromLua( {name = "the name", surname = "the surname" } )
print(ret.DATA_1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71661096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档