木骰

xLua:从lua调C# [LuaCallCSharp] 生成Wrap代码

[XLua.LuaCallCSharp]
跟toLua类似的,xLua想要从lua调C#也需要生成一堆的中间代码,不同的是toLua是通过添加配置然后生成Wrap文件,而xLua则是通过打标签的方式。并且二者生成的中间文件也都叫xxxWrap.cs。
不过看到xLua的配置文档,发现xLua其实也是可以通过配置的方式来生成Wrap文件的。感觉这个方式比打标签要方便一些,可以进行集中管理。
那么就按照 xLua的配置.Doc 里来,写一个静态的配置类。叫WrapConfig.cs。本来追着xLua的Editor脚本进去找到了xLua自己的一个配置脚本GenConfig.cs在Src目录下,不过打开一看,作者在开头写了
,那还是自己重起一个好了。


public static class WrapConfig  {
    [LuaCallCSharp]
    public static List List_LuaCallCS = new List()
    {
        typeof(WrapTest),
    };
       
}

这个类建好了只要就这么放着就可以了,不用自己去调用他,GenerateCode的时候xLua自己会去搜到这个类的。
想要从Lua调C#的类就通通配到这个List_LuaCallCS里面。用这种方法不仅可以配自定义的C#类,对于一些Unity内置的类型也可以配置。因为内置的类型不能自己编辑源码,也就不能打标签了,所以只能通过这种方式来进行配置。

这么一来,生成Wrap文件的做法上就跟toLua一样了。

      注意:这里生成的适配代码不会追到父类,也就是说如果要适配的类有父类,如 上面的WrapTest有父类MonoBehaviour,那么就应该为MonoBehaviour也进行适配。不过对于MonoBehaviour的适配,xLua本身已经做好了。

文档下面还有一些标签 ReflectionUse,CSharpCallLua等,除了最下面的AdditionProperties和BlackList,其他的也都可以像这样来进行配置。

— 于 共写了836个字
— 文内使用到的标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*