赞
踩
原创
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等其他的动画方法,我看别的文章都没加这个,使用不方便,一定要加。
- public static Type[] exports = new Type[]
- {
- //这里加入需要的静态类,会生出相应的文件到Wrap文件夹
- typeof(DG.Tweening.TweenSettingsExtensions),
- typeof(DG.Tweening.ShortcutExtensions),
- typeof(DG.Tweening.TweenExtensions),
- typeof(DG.Tweening.ShortcutExtensions46),
-
- };
ToLuaFileExport .cs
这个文件里主要修改一个地方,否者被报错,需要新建相应的文件夹。
- static string ToLuaPath
- {
- get
- {
- return Application.dataPath + @"/Editor/Wrap/"; //DoTween新增 导出wrap路径
- }
- }
修改两个文件:
ToLuaExport.cs
其他地方,前人已经修改好了,我注视都加了“新增”两个字,也写了一些注释。可以直接替换我的到你的那里使用。主要注意一个地方:
- //DoTween新增
-
- static bool NeedDotweenNamespace()
- {
- //UnityEngine.Debug.LogError("在warp的类名是"+libClassName);
- switch (libClassName)
- {
- //这里加入的组件能确保你可以在Lua里点出来DOTWEEN的方法。
- //配合ToLuaFile文件加的静态类方法使用。
- //需要使用DG.Tweening.ShortcutExtensions里的函数要加入
-
- case "UnityEngine.Transform":
- case "UnityEngine.AudioSource":
- case "UnityEngine.Camera":
- case "UnityEngine.Component":
- case "UnityEngine.Light":
- case "UnityEngine.Material":
- case "UnityEngine.Sequence":
- case "UnityEngine.Tween":
- case "UnityEngine.Tweener":
- case "UnityEngine.Rigidbody":
-
- //需要使用DG.Tweening.ShortcutExtensions46里的函数要加入(Image和Text的透明度颜色都在这个类里)
- case "UnityEngine.UI.Image":
- case "UnityEngine.UI.Text":
- case "UnityEngine.RectTransform":
-
-
- case "DG.Tweening.ShortcutExtensions":
- case "DG.Tweening.AutoPlay":
- case "DG.Tweening.AxisConstraint":
- case "DG.Tweening.Ease":
- case "DG.Tweening.LogBehaviour":
- case "DG.Tweening.LoopType":
- case "DG.Tweening.PathMode":
- case "DG.Tweening.PathType":
- case "DG.Tweening.RotateMode":
- case "DG.Tweening.ScrambleMode":
- case "DG.Tweening.TweenType":
- case "DG.Tweening.UpdateType":
- case "DG.Tweening.DOTween":
- case "DG.Tweening.DOVirtual":
- case "DG.Tweening.EaseFactory":
- case "DG.Tweening.Tweener":
- case "DG.Tweening.Tween":
- case "DG.Tweening.Sequence":
- case "DG.Tweening.TweenParams":
- case "DG.Tweening.DOTweenAnimation":
- case "DG.Tweening.DOTweenPath":
- case "DG.Tweening.DOTweenVisualManager":
- case "DG.Tweening.Core.ABSSequentiable":
- case "TweenerCoreV3V3VO":
- case "TweenerCoreQ4V3QO": //新增的泛型,给旋转用
-
-
- return true;
- }
-
- return false;
- }
WrapFile.cs
包裹文件里增加:
- _GT(typeof(Text)),
- _GT(typeof(Image)),
-
- //DoTween
- _GT(typeof(DG.Tweening.ShortcutExtensions)),
- _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.Tween)),
- _GT(typeof(DG.Tweening.Sequence)),
- _GT(typeof(DG.Tweening.TweenParams)),
- _GT(typeof(DG.Tweening.DOTweenAnimation)),
- _GT(typeof(DG.Tweening.DOTweenPath)),
- _GT(typeof(DG.Tweening.DOTweenVisualManager)),
- _GT(typeof(DG.Tweening.Core.ABSSequentiable)),
- _GT(typeof(DG.Tweening.Core.TweenerCore<Vector3, Vector3, DG.Tweening.Plugins.Options.VectorOptions>)).SetWrapName("TweenerCoreV3V3VO").SetLibName("TweenerCoreV3V3VO"),
- _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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。