使用MoonSharp将C#对象传递到lua函数中。

我在Unity3d中使用Moonsharp遇到了问题。我试图传递“AppletMessage”对象:

[MoonSharpUserData]
public class AppletMessage {
    public string Name;
    public string[] Args;

    public AppletMessage(string _name, string[] _args) {
        Name = _name;
        Args = _args;
    }
}

到lua的函数中,我不知道怎么做。 我目前的做法是这样的:

//在start函数中
UserData.RegisterType<AppletMessage>();

//稍后,在从栈中弹出最新消息作为“LatestMessage”之后
result = applet.Call(applet.Globals["OnCatchMessage"], new AppletMessage[] {LatestMessage});

这给我带来了这个错误,来自 applet 类,当它尝试调用函数并传递 AppletMessage 时:

无法访问 userdata <AppletMessage> 的字段
点赞
用户7097952
用户7097952

你在游戏启动时是否添加了 Moonsharp.Interpreter.UserData.RegisterAssembly();?你需要这样做来正确检测和使 [MoonSharpUserData] 标签正常工作。

2018-08-05 04:54:40