项目到结尾了,各种忙。还要兼顾写技术文档(客户文档,服务端文档),原本打算搬到线上,突然改变了注意,要在本地部署写文档一步步写。服务端还是用的windowserver2012,数据库用sql2008,之前没用过只能扛着上安装系统迁移数据库,windowServer的IIS。。。(确实学到不少)。
原本写文档部署服务端就够搞了,早上翻来老板突然话要接IOS内购,哎,疼啊没有mac。看了一天插件,还是算了自己写个类似插件的东西吧。发现已经有段时间没写自己的框架了,今晚找点时间再看看之前写的代码回顾下,看走到哪里了。
之前原本打算写写tolua怎么导入插件,一直没时间,今天静下来很把之前倒入Dotween的思路整理下。
tolua导入插件思路:这里只提供一个小小的思路,深入靠自己。其实里面都已经做好了扩展接口ToLuaExport.cs 里面的ProcessExtends函数。
注意:extendName = "ToLua_" + className.Replace(".", "_”);//这是tolua约束好的格式以Tolua_开头,也就是说插件导出来的函数名必须以Tolua开头,而且className也约束了这个函数将写入到哪个wrap
extendType = Type.GetType(extendName + ", Assembly-CSharp-Editor”);//后面就是type.GetMethods获取所有的方法读入,写入
extendType.GetField("AdditionNameSpace"); //这句大概就是加入的头 ,如果你需要加入头就在导出的插件函数这个字段写入头字段。比如你要导入的头是Dotween—>public static string AdditionNameSpace = "DG.Tweening";
如何导出插件的函数其实可以通过type反射获取里面的所有方法和属性进行写文件操作当然规则就是上面一些,不熟的可以借鉴群里日月大神写的ToluaFileExport.cs。
1.导入的_GT的部分:
_GT(typeof(DG.Tweening.AutoPlay)),
_GT(typeof(DG.Tweening.AxisConstraint)),
_GT(typeof(DG.Tweening.Ease)),
_GT(typeof(DG.Tweening.LogBehaviour)),
_GT(typeof(DG.Tweening.LoopType)),
_GT(typeof(DG.Tweening.PathMode)),
_GT(typeof(DG.Tweening.PathType)),
_GT(typeof(DG.Tweening.RotateMode)),
_GT(typeof(DG.Tweening.ScrambleMode)),
_GT(typeof(DG.Tweening.TweenType)),
_GT(typeof(DG.Tweening.UpdateType)),
_GT(typeof(DG.Tweening.DOTween)),
_GT(typeof(DG.Tweening.DOVirtual)),
_GT(typeof(DG.Tweening.EaseFactory)),
_GT(typeof(DG.Tweening.Tweener)),
_GT(typeof(DG.Tweening.Sequence)),
_GT(typeof(DG.Tweening.Tween)),
_GT(typeof(DG.Tweening.TweenParams)),
_GT(typeof(DG.Tweening.DOTweenAnimation)),
_GT(typeof(DG.Tweening.DOTweenPath)),
_GT(typeof(DG.Tweening.DOTweenVisualManager)),
2.注意了导出这些还是不够运行错误DG.Tweening.Core.TweenerCore这个泛指类型没有导出,请教群里面的三日月.9 夜空,搞定。
_GT(typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>)).SetWrapName("TweenerCoreV3V3VO").SetLibName("TweenerCoreV3V3VO”),
以后注意遇到泛指类型的要指明类型导出。
3.例子:
local sequence = DG.Tweening.DOTween.Sequence();
sequence:Append(_fastRegisterBtn.transform:DOLocalMove(Vector3.New(100, 100, 0), 5, false));
sequence:SetLoops(1);
sequence:OnComplete(handler(self,self.DelTimer))