当前位置:   article > 正文

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

ulua调用dotween


原创

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等其他的动画方法,我看别的文章都没加这个,使用不方便,一定要加。

  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. };


ToLuaFileExport .cs

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

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



修改两个文件:

ToLuaExport.cs

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

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





WrapFile.cs

包裹文件里增加:

  1. _GT(typeof(Text)),
  2. _GT(typeof(Image)),
  3. //DoTween
  4. _GT(typeof(DG.Tweening.ShortcutExtensions)),
  5. _GT(typeof(DG.Tweening.AutoPlay)),
  6. _GT(typeof(DG.Tweening.AxisConstraint)),
  7. _GT(typeof(DG.Tweening.Ease)),
  8. _GT(typeof(DG.Tweening.LogBehaviour)),
  9. _GT(typeof(DG.Tweening.LoopType)),
  10. _GT(typeof(DG.Tweening.PathMode)),
  11. _GT(typeof(DG.Tweening.PathType)),
  12. _GT(typeof(DG.Tweening.RotateMode)),
  13. _GT(typeof(DG.Tweening.ScrambleMode)),
  14. _GT(typeof(DG.Tweening.TweenType)),
  15. _GT(typeof(DG.Tweening.UpdateType)),
  16. _GT(typeof(DG.Tweening.DOTween)),
  17. _GT(typeof(DG.Tweening.DOVirtual)),
  18. _GT(typeof(DG.Tweening.EaseFactory)),
  19. _GT(typeof(DG.Tweening.Tweener)),
  20. _GT(typeof(DG.Tweening.Tween)),
  21. _GT(typeof(DG.Tweening.Sequence)),
  22. _GT(typeof(DG.Tweening.TweenParams)),
  23. _GT(typeof(DG.Tweening.DOTweenAnimation)),
  24. _GT(typeof(DG.Tweening.DOTweenPath)),
  25. _GT(typeof(DG.Tweening.DOTweenVisualManager)),
  26. _GT(typeof(DG.Tweening.Core.ABSSequentiable)),
  27. _GT(typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>)).SetWrapName("TweenerCoreV3V3VO").SetLibName("TweenerCoreV3V3VO"),
  28. _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使用教程网上挺多的,我就写两句给新手吧。

    function  StepComplete ()
       logError("循环动画中单次完成回调!")
    end

    function  Complete ()
       logError("动画完成回调!")
    end

    Panel.Light[1]:GetComponent('Image'):DOFade(0,2)
    Panel.Light[1]:GetComponent('Image'):DOColor(Color.New(1,1,1,0.5),2)
    Panel.Light[1].transform:DOLocalMoveY(-300,-100, false):SetEase(DG.Tweening.Ease.Linear):SetLoops(-1):OnStepComplete( StepComplete )

    local sequence = DG.Tweening.DOTween.Sequence()   --动画列队
    sequence:Append(  Panel.Light[1]:GetComponent("Image"):DOFade(1,1.5))
    sequence:Append(  Panel.Light[1]:GetComponent("Image"):DOFade(0,1.5))
    sequence:Play()  
    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":



最后附上包下载地址http://download.csdn.net/detail/u012322710/9829413


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/125953
推荐阅读
  

闽ICP备14008679号

        
cppcmd=keepalive&