经过前面的配置,应该可以正常跑Lua代码了,但是要想在lua中调用C#的代码,一般要生成相应的wrap文件,xlua通过打标签的方式来进行实现。
官方建议不要在类里面打标签,而是统一到一个文件里,提供了示例代码ExampleGenConfig.cs,统一写在一个文件里,如果要配置同一个命名空间下的所有类进行导出,比如UGUI类,可以通过如下代码直接遍历取得
[LuaCallCSharp]
public static List<Type> LuaCallCSharp
{
get
{
List<Type> list = Assembly.Load("UnityEngine.UI").GetExportedTypes().Concat(customTypes)
.Where(type => !type.IsGenericTypeDefinition)//去除泛型
.Where(type => !type.IsNested)//去除嵌套类型
.Where(type => !isExcluded(type)).ToList();
return list;
}