Ulua使用DoTween教程

来源:互联网 发布:mac玩游戏时dock栏 编辑:程序博客网 时间:2024/05/17 20:25

原创

Ulua热更新提高 <四><五>两张其实草稿都在的,但是我感觉还有很多要修改的地方,有些地方我也没有弄透,所以先不发了。最近比较忙,基本没时间写博客,见谅。Ulua里使用DoTween网上能搜索到很多,出自哪里我也不知道了,感谢原作者的努力。全部都是写在LuaFramework框架下的DoTween使用,还有图片和文字的透明度和改变颜色没法使用,有时候经常需要Image改变透明度,很麻烦,今天把代码稍微看了下,做了下修改,已经可以实现了,当然还可以继续增加,包括DoTween里面需要用到的导出静态类,我觉得够用了,就没加了。DoTween在Ulua里还有一个问题,旋转动画竟然不能加完成回调!C#里写没问题,百思不得其解,把代码看了一遍以后,终于照出来了原因了,少包裹了一个旋转Quaternion的泛型,已经修正了。 代码地址在结尾,simpleframework-ugui框架可以直接拿来用,新的LuaFramework修改一下Warp生成的目录就好了,搞这几个问题花了不少时间,搞不好睡不着,不过也好好看了下DoTween的代码,学习到了不少东西。


主要增加两个文件:

ToLuaFile.cs

需要使用的DG.Tweening底下类的方法要加入, typeof(DG.Tweening.ShortcutExtensions46) ,加入这个静态类才能使用Image和Text还有RectTransform等其他的动画方法,我看别的文章都没加这个,使用不方便,一定要加。

[csharp] view plain copy
  1. public static Type[] exports = new Type[]  
  2. {  
  3.     //这里加入需要的静态类,会生出相应的文件到Wrap文件夹  
  4.     typeof(DG.Tweening.TweenSettingsExtensions),  
  5.     typeof(DG.Tweening.ShortcutExtensions),  
  6.     typeof(DG.Tweening.TweenExtensions),  
  7.     typeof(DG.Tweening.ShortcutExtensions46),  
  8.   
  9. };  


ToLuaFileExport .cs

这个文件里主要修改一个地方,否者被报错,需要新建相应的文件夹。

[csharp] view plain copy
  1. static string ToLuaPath  
  2. {  
  3.     get  
  4.     {  
  5.         return Application.dataPath + @"/Editor/Wrap/";  //DoTween新增 导出wrap路径  
  6.     }  
  7. }  



修改两个文件:

ToLuaExport.cs

其他地方,前人已经修改好了,我注视都加了“新增”两个字,也写了一些注释。可以直接替换我的到你的那里使用。主要注意一个地方:

[csharp] view plain copy
  1.  //DoTween新增  
  2. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  3. static bool NeedDotweenNamespace()  
  4. {  
  5.     //UnityEngine.Debug.LogError("在warp的类名是"+libClassName);  
  6.     switch (libClassName)  
  7.     {  
  8.            //这里加入的组件能确保你可以在Lua里点出来DOTWEEN的方法。  
  9.            //配合ToLuaFile文件加的静态类方法使用。  
  10.            //需要使用DG.Tweening.ShortcutExtensions里的函数要加入  
  11.              
  12.         case "UnityEngine.Transform":  
  13.         case "UnityEngine.AudioSource":  
  14.         case "UnityEngine.Camera":  
  15.         case "UnityEngine.Component":  
  16.         case "UnityEngine.Light":  
  17.         case "UnityEngine.Material":  
  18.         case "UnityEngine.Sequence":  
  19.         case "UnityEngine.Tween":  
  20.         case "UnityEngine.Tweener":  
  21.         case "UnityEngine.Rigidbody":  
  22.   
  23.            //需要使用DG.Tweening.ShortcutExtensions46里的函数要加入(Image和Text的透明度颜色都在这个类里)  
  24.            case "UnityEngine.UI.Image":  
  25.            case "UnityEngine.UI.Text":  
  26.            case "UnityEngine.RectTransform":  
  27.              
  28.                 
  29.         case "DG.Tweening.ShortcutExtensions":  
  30.         case "DG.Tweening.AutoPlay":  
  31.         case "DG.Tweening.AxisConstraint":  
  32.         case "DG.Tweening.Ease":  
  33.         case "DG.Tweening.LogBehaviour":  
  34.         case "DG.Tweening.LoopType":  
  35.         case "DG.Tweening.PathMode":  
  36.         case "DG.Tweening.PathType":  
  37.         case "DG.Tweening.RotateMode":  
  38.         case "DG.Tweening.ScrambleMode":  
  39.         case "DG.Tweening.TweenType":  
  40.         case "DG.Tweening.UpdateType":  
  41.         case "DG.Tweening.DOTween":  
  42.         case "DG.Tweening.DOVirtual":  
  43.         case "DG.Tweening.EaseFactory":  
  44.         case "DG.Tweening.Tweener":  
  45.         case "DG.Tweening.Tween":  
  46.         case "DG.Tweening.Sequence":  
  47.         case "DG.Tweening.TweenParams":  
  48.         case "DG.Tweening.DOTweenAnimation":  
  49.         case "DG.Tweening.DOTweenPath":  
  50.         case "DG.Tweening.DOTweenVisualManager":  
  51.         case "DG.Tweening.Core.ABSSequentiable":  
  52.         case "TweenerCoreV3V3VO":  
  53.            case "TweenerCoreQ4V3QO":  //新增的泛型,给旋转用  
  54.                  
  55.   
  56.     return true;  
  57.     }  
  58.   
  59.     return false;  
  60. }   





WrapFile.cs

包裹文件里增加:

[csharp] view plain copy
  1.       _GT(typeof(Text)),  
  2.       _GT(typeof(Image)),  
  3.   
  4.       //DoTween   
  5.       _GT(typeof(DG.Tweening.ShortcutExtensions)),  
  6.       _GT(typeof(DG.Tweening.AutoPlay)),  
  7.       _GT(typeof(DG.Tweening.AxisConstraint)),  
  8.       _GT(typeof(DG.Tweening.Ease)),  
  9.       _GT(typeof(DG.Tweening.LogBehaviour)),  
  10.       _GT(typeof(DG.Tweening.LoopType)),  
  11.       _GT(typeof(DG.Tweening.PathMode)),  
  12.       _GT(typeof(DG.Tweening.PathType)),  
  13.       _GT(typeof(DG.Tweening.RotateMode)),  
  14.       _GT(typeof(DG.Tweening.ScrambleMode)),  
  15.       _GT(typeof(DG.Tweening.TweenType)),  
  16.       _GT(typeof(DG.Tweening.UpdateType)),  
  17.       _GT(typeof(DG.Tweening.DOTween)),  
  18.       _GT(typeof(DG.Tweening.DOVirtual)),  
  19.       _GT(typeof(DG.Tweening.EaseFactory)),  
  20.       _GT(typeof(DG.Tweening.Tweener)),  
  21.       _GT(typeof(DG.Tweening.Tween)),  
  22.       _GT(typeof(DG.Tweening.Sequence)),  
  23.       _GT(typeof(DG.Tweening.TweenParams)),  
  24. _GT(typeof(DG.Tweening.DOTweenAnimation)),  
  25. _GT(typeof(DG.Tweening.DOTweenPath)),  
  26. _GT(typeof(DG.Tweening.DOTweenVisualManager)),  
  27. _GT(typeof(DG.Tweening.Core.ABSSequentiable)),  
  28. _GT(typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>)).SetWrapName("TweenerCoreV3V3VO").SetLibName("TweenerCoreV3V3VO"),  
  29.       _GT(typeof(DG.Tweening.Core.TweenerCore<Quaternion, Vector3, DG.Tweening.Plugins.Options.QuaternionOptions>)).SetWrapName("TweenerCoreQ4V3QO").SetLibName("TweenerCoreQ4V3QO"),//一定要加Quaternion的泛型,要不然旋转后面除了没有回调也用不了其他DoTween的方法  


使用方法:1.导入工程后,编辑器:Lua----------Lua/Export ToLuaExtendFile(生成的文件在Editor/Wrap中)-----然后再GenLua 成中间代码,ULUA就可以使用了。

DoTween使用教程网上挺多的,我就写两句给新手吧。

[plain] view plain copy
  1. function  StepComplete ()  
  2.    logError("循环动画中单次完成回调!")  
  3. end  
  4.   
  5. function  Complete ()  
  6.    logError("动画完成回调!")  
  7. end  
  8.   
  9. Panel.Light[1]:GetComponent('Image'):DOFade(0,2)  
  10. Panel.Light[1]:GetComponent('Image'):DOColor(Color.New(1,1,1,0.5),2)  
  11. Panel.Light[1].transform:DOLocalMoveY(-300,-100, false):SetEase(DG.Tweening.Ease.Linear):SetLoops(-1):OnStepComplete( StepComplete )  
  12.   
  13. local sequence = DG.Tweening.DOTween.Sequence()   --动画列队  
  14. sequence:Append(  Panel.Light[1]:GetComponent("Image"):DOFade(1,1.5))  
  15. sequence:Append(  Panel.Light[1]:GetComponent("Image"):DOFade(0,1.5))  
  16. sequence:Play()    
  17. sequence:OnComplete(Complete)  


注意:今天发现昨天少加了一个颜色的泛型在 WrapFile 里,需要什么泛型再继续添加就可以了,不加上不能直接使用DoTween的api,下载包里也没有加,自己加吧。

_GT(typeof(DG.Tweening.Core.TweenerCore<Color, Color, DG.Tweening.Plugins.Options.ColorOptions>)).SetWrapName("TweenerCoreCoCoCO").SetLibName("TweenerCoreCoCoCO"),

相应的 ToLuaExport 里也要加:

case "TweenerCoreCoCoCO":



转载: 

Ulua热更新提高 <六> Ulua使用DoTween改进版

原创粉丝点击