XLua热配置优化:白机制与反射规避策略.pdfVIP

XLua热配置优化:白机制与反射规避策略.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

xLua的配置

xLua用白来指明生成哪些代码,而白通过attribute来配置,比如你想从lua调

用c#的某个类,希望生成适配代码,你可以为这个类型打一个LuaCallCSharp:

[LuaCallCSharp]

publicclassA

{

}

有时我们无法直接给一个类型打,比如系统api,没源码的库,或者实例化的泛化

类型,这时你可以在一个静态类里一个静态field或者静态property,该字段的类型除

BlackList和AdditionalProperties之外只要实现了IEnumerableType就可以了(这两个例外

后面具体会说),然后为这字段加上:

[LuaCallCSharp]

publicstaticListTypemymodule_lua_call_cs_list=newListType()

{

typeof(GameObject),

typeof(Dictionarystring,int),

};

XLua.LuaCallCSharp

一个C#类型加了这个配置,xLua会生成这个类型的适配代码(包括构造该类型实例,

其成员属性、方法,静态属性、方法),否则将会尝试用性能较低的反射方式来。

一个类型的扩展方法(ExtensionMethods)加了这配置,也会生成适配代码并追加到被

扩展类型的成员方法上。

xLua只会生成加了该配置的类型,不会自动生成其父类的适配代码,当子类对象

的父类方法,如果该父类加了LuaCallCSharp配置,则执行父类的适配代码,否则会尝试用

反射来。

反射除了性能不佳之外,在il2cpp下还有可能因为代码剪裁而导致无法,后者

可以通过下面介绍的ReflectionUse来避免。

XLua.ReflectionUse

一个C#类型类型加了这个配置,xLua会生成link.xmlil2cpp的代码剪裁。

对于扩展方法,必须加上LuaCallCSharp或者ReflectionUse才可以被到。

建议所有要在Lua的类型,要么加LuaCallCSharp,要么加上ReflectionUse,这才

能够保证在各平台都能正常运行。

Xlua的配置

xlua用白来指明生成哪些代码,而白通过属性来配置,比如你想从lua调调c#的某个

类,希望生成适配代码,你可以为这个类型打一个luacallcsharp:[luacallcsharp]public

classa{}

有时我们无法直接给一个类型打,比如系统,比如系统api,没源码的库,或者实

例化的泛化,这时你可以在一个静态类里一个静态fieldpropert,该字段的类型除黑

列表和额外的properties之外只要实现了

[luacallcsharp]

____新列表类型()()

公共静态列表typemyModulelua调用cslist=

{

typeof(gameObject),

typeof(字典字符串,int

文档评论(0)

ericxiao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档