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

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

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

进入lua中的功能,我不确定该怎么做。
我目前正在做的是这样的:
//In a start function
UserData.RegisterType<AppletMessage>();

//Later on, after popping the latest message from a stack as 'LatestMessage'
result = applet.Call( applet.Globals["OnCatchMessage"],new AppletMessage[] {LatestMessage});

这是给我这个来自applet类的错误,当它尝试调用该函数并在其中传递AppletMessage时:
cannot access field  of userdata<AppletMessage>

最佳答案

您在游戏开始时是否添加了Moonsharp.Interpreter.UserData.RegisterAssembly();?您需要使用它来检测并使[MoonSharpUserData]标记正常工作。

关于c# - 使用Moonsharp将C#对象传递给lua函数。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42550826/

10-09 03:53