根据前面的文章,我们会发现我们会在很多类前面加很多XLua的标签,有LuaCallCSharp,CSharpCallLua,Hotfix 等等。关于这些配置的作用官方文档也有相应的说明:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/configure.md。这里我已个人理解和一些demo,对几个比较重要的标签详细记录一下。
打标签的方式
xLua所有的配置都支持三种方式:打标签;静态列表;动态列表。
配置有两必须,两建议:
- 列表方式均必须是static的字段/属性
- 列表方式均必须放到一个static类
- 建议不用标签方式
- 建议列表方式配置放Editor目录
打标签
xLua用白名单来指明生成哪些代码,而白名单通过attribute来配置,比如你想从lua调用c#的某个类,希望生成适配代码,你可以为这个类型打一个LuaCallCSharp标签:
[LuaCallCSharp]
public classA {
}
该方式方便,但在il2cpp下会增加不少的代码量,不建议使用。
静态列表
有时我们无法直接给一个类型打标签,比如系统api,没源码的库,或者实例化的泛化类型,这时你可以在一个静态类里声明一个静态字段,该字段的类型除BlackList和AdditionalProperties之外只要实现了IEnumerable<Type>就可以了(这两个例外后面具体会说),然后为这字段加上标签:
[LuaCallCSharp]
public static List<Type> mymodule_lua_call_cs_list = new List<Type>() {
typeof(GameObject),
typeof(Dictionary<string, int>),
};
这个字段需要放到一个
静态类
里头,建议放到
Editor目录
。