当前位置: 首页 > news >正文

郑州网站改版上海网站制作网

郑州网站改版,上海网站制作网,h5页面制作平台有哪些,wordpress添加新的模板1.Xlua的配置应用 xLua所有的配置都支持三种方式#xff1a;打标签#xff1b;静态列表#xff1b;动态列表。配置要求#xff1a; 列表方式均必须是static的字段/属性 列表方式均必须放到一个static类 建议不用标签方式 建议列表方式配置放Editor目录#xff08;如果是H…1.Xlua的配置应用 xLua所有的配置都支持三种方式打标签静态列表动态列表。配置要求 列表方式均必须是static的字段/属性 列表方式均必须放到一个static类 建议不用标签方式 建议列表方式配置放Editor目录如果是Hotfix配置而且类位于Assembly-CSharp.dll之外的其它dll必须放Editor目录 1.打标签 xLua用白名单来指明生成哪些代码而白名单通过attribute来配置该方式方便但在il2cpp下会增加不少的代码量不建议使用。 1.LuaCallCSharp 一个C#类型加了这个配置xLua会生成这个类型的适配代码包括构造该类型实例访问其成员属性、方法静态属性、方法。一个类型的扩展方法Extension Methods加了这配置也会生成适配代码并追加到被扩展类型的成员方法上。xLua只会生成加了该配置的类型不会自动生成其父类的适配代码当访问子类对象的父类方法如果该父类加了LuaCallCSharp配置则执行父类的适配代码。如果没有适配代码则会尝试用反射来访问但反射访问性能不佳在il2cpp下有可能因为代码剪裁而导致无法访问。 [LuaCallCSharp] public class TestObj {public void test(testStruct t){Debug.Log(${t.a},{t.c});} } 上面的类加了此标签就会生成适配代码 2.ReflectionUse 一个C#类型类型加了这个配置xLua会生成link.xml阻止il2cpp的代码剪裁。对于扩展方法必须加上 LuaCallCSharp 或者 ReflectionUse 才可以被访问到。建议所有要在Lua访问的类型要么加LuaCallCSharp要么加上ReflectionUse这才能够保证在各平台都能正常运行。 如何配置 [ReflectionUse] public class TestReflectionUseObj {} link.xml保存着打上LuaCallCSharp和ReflectionUse标签的类 3.DoNotGen 指明一个类里头的部分函数、字段、属性不生成代码通过反射访问。 只能标准 DictionaryType, Liststring 的field或者property。key指明的是生效的类value是一个列表配置的是不生成代码的函数、字段、属性的名字。 如何配置 [LuaCallCSharp] public class TestDontGen {public int a1;public int a2; } 1.打标签(这种方式行不通) 在生成代码中a2还是生成和a1一样的适配函数 2.静态列表 public static class ExportCfg {[DoNotGen]public static DictionaryType,Liststring dontGenDic new DictionaryType, Liststring {[typeof(TestDontGen)] new Liststring { a2 },}; } 4.CSharpCallLua 把一个lua函数适配到一个C# delegate一类是C#侧各种回调UI事件delegate参数比如ListT:ForEach另外一类场景是通过LuaTable的Get函数指明一个lua函数绑定到一个delegate或者把一个lua table适配到一个C# interface时使用该标签。 如何配置 [CSharpCallLua]public interface IPlayerPosition{int x { get; set; }int y { get; set; }int z { get; set; }void add(int x, int y, int z);void sub(int x, int y, int z);}[CSharpCallLua]public delegate void AddMethod(LuaTable self, int x, int y, int z);[CSharpCallLua]public delegate Action addAc(LuaTable t, int x, int y, int z);[CSharpCallLua]public delegate void test1(int x);[CSharpCallLua]public delegate Action test2(int x); 生成代码如下接口生成独立文件委托事件生成在DelegateGenBridge文件中 5.GCOptimize xLua无参构造函数的复杂类型struct的默认传递方式是引用传递当lua侧使用完毕释放该对象的引用时会产生一次gc。 一个C#纯值类型注指的是一个只包含值类型的struct可以嵌套其它只包含值类型的struct或者C#枚举值加上这个标签之后XLua会生成gc优化代码在lua和c#间传递将不产生C#gc alloc该类型的数组一维访问也不产生gc。 如何配置 [GCOptimize] public struct TestGCOptimizeValue {public int a;public int b;public float f; } struct 满足条件如下 1.struct允许嵌套其它struct但它以及它嵌套的struct只能包含这几种基本类型byte、sbyte、short、ushort、int、uint、long、ulong、float、double例如UnityEngine定义的大多数值类型Vector系列QuaternionColor。。。均满足条件或者用户自定义的一些struct 2.该struct配置了GCOptimize属性对于常用的UnityEngine的几个structVector系列QuaternionColor。。。均已经配置了该属性这个属性可以通过配置文件或者C# Attribute实现 3.使用到该struct的地方需要添加到生成代码列表 6.AdditionalProperties 该标签GCOptimize的扩展配置如果struct有的字段是私有的需要通过属性来访问这时就需要用到该配置默认情况下GCOptimize只对public的field打解包 如何配置 [GCOptimize] public struct TestGCOptimizeValue {public int a;public int b;[AdditionalProperties]float f; } 7.BlackList 一个类型的一些成员不需要适配代码可以通过加上该标签来实现。考虑到有可能需要把重载函数的其中一个重载列入黑名单配置方式比较复杂类型是 ListListstring对于每个成员在第一层List有一个条目第二层List是个string的列表第一个string是类型的全路径名第二个string是成员名如果成员是一个方法还需要从第三个string开始把其参数的类型全路径全列出来。 如何配置 [LuaCallCSharp] public class TestBlackList {public int a1;public int a2;public void Test(){} } 若不加处理生成代码如下  1.打标签 C#代码 [LuaCallCSharp] public class TestBlackList {public int a1;[BlackList]public int a2;[BlackList]public void Test(){} } 生成代码如下  2.静态列表 列表中的第一个字符串是类型第二个及以后是要屏蔽的字段 [BlackList]public static ListListstring BlackList new ListListstring(){new Liststring(){ TestBlackList, a2},new Liststring(){ TestBlackList, Test}}; 生成代码 注 DoNotGen和ReflectionUse的区别是1、ReflectionUse指明的是整个类2、当第一次访问一个函数字段、属性时ReflectionUse会把整个类都wrap而DoNotGen只wrap该函数字段、属性 DoNotGen和BlackList的区别是1、BlackList配了就不能用2、BlackList能指明某重载函数DoNotGen不能 2.静态列表 有时我们无法直接给一个类型打标签比如系统api没源码的库或者实例化的泛化类型这时可以在一个静态类里声明一个静态字段然后为这字段加上标签并且这个字段需要放到一个静态类里建议放到 Editor目录。 如何配置 public static class ExportCfg {[DoNotGen]public static DictionaryType, Liststring dontGenDic new DictionaryType, Liststring{[typeof(TestDontGen)] new Liststring { a2 },};[BlackList]public static ListListstring BlackList new ListListstring(){new Liststring(){ TestBlackList, a2},new Liststring(){ TestBlackList, Test}}; } 3.动态列表 声明一个静态属性打上相应的标签即可。 见HotFix。 2.HotFix 3.其他 1.Unity协程的使用 未完待续。。。 参考链接 介绍 — XLua (tencent.github.io)
http://www.hkea.cn/news/14422853/

相关文章:

  • 门户网站设计特点高端 网站
  • 可以自己做视频网站吗中国黄金集团j建设公司网站
  • seo站长网周口网站建设哪家好
  • 上海金融网站制作公休闲零食网站建设+中企动力
  • 自己买台服务器做网站网上购物平台口碑排名
  • 现在还有人用asp做网站西安软件开发公司排行
  • 手机网站代码网站和自媒体都可以做
  • 国外扁平化网站设计欣赏企业做网站天津
  • 珠珠宝宝网网站站建建设设电信ip做的网站移动不能访问
  • 网站安装部署网站seo推广平台
  • 如何去做一个网站wordpress jetpack插件
  • 网站建设制作哪家便宜wordpress无法点上传
  • 定制网站建设报价单南昌市建设工程质量监督网站
  • 站内seo的技巧外贸网站建设合同
  • 新的网站建设北京工程设计公司排名
  • 专业的网站建设科技公司广告设计与制作专业需要美术功底吗
  • 免费网站创建工具欧美网站模版
  • 动漫网站建设的目的食品网站建设建议
  • 西安营销型网站制作价格可以免费注册网站
  • 给六人游做网站开发的王占山战斗英雄简历
  • 垂直电商网站开发刚出来的新产品怎么推
  • 上海建网站手机app商品门户网站解决方案
  • 做信息网站怎么赚钱重庆渝北做网站哪里便宜
  • 免费空间+网站空间+虚拟主机学校网站建设方案图片
  • 做外快的网站青岛做外贸网站
  • vr全景网站怎么做模板在线设计制作
  • 做玉的网站开发者模式怎么关闭vivo
  • 建设部标准定额司网站wordpress添加多首音乐
  • 甘肃做网站哪家专业产品设计学什么
  • 网站开发合同文档锦江建设和交通局网站