Files
Main/Assets/GameAssets/Resources/GameUI/Common/UIAnimationMainger/UIAnimations.cs

541 lines
14 KiB
C#
Raw Normal View History

2025-01-25 04:38:09 +08:00

#define FUNCELL_MODIFIED
using Thousandto.Core.Base;
using UnityEngine;
namespace Thousandto.Plugins.Common
{
//alpha动画
public class UIAlphaAnimation : UIAnimationBase
{
#region//私有变量
//开始值
private float _startValue = 0f;
//结束值
private float _endValue = 0f;
//操作的对象
private Transform _handleTrans = null;
private UIPanel _handlePanel = null;
private UIWidget _handleWidget = null;
private UIButton _handleButton = null;
//操作的UI
private UINormalForm _handleForm = null;
#endregion
#region//属性
public float StartValue
{
get
{
return _startValue;
}
set
{
_startValue = value;
if(_startValue < 0.002f)
{
_startValue = 0.002f;
}
}
}
public float EndValue
{
get
{
return _endValue;
}
set
{
_endValue = value;
if (_endValue < 0.002f)
{
_endValue = 0.002f;
}
}
}
public override Transform HandleTrans
{
get
{
return _handleTrans;
}
set
{
_handleTrans = value;
_handlePanel = null;
_handleWidget = null;
_handleButton = null;
_handleForm = null;
if (_handleTrans != null)
{
_handlePanel = _handleTrans.GetComponent<UIPanel>();
if (_handlePanel == null)
{
_handleWidget = _handleTrans.GetComponent<UIWidget>();
}
_handleButton = _handleTrans.GetComponent<UIButton>();
_handleForm = _handleTrans.GetComponent<UINormalForm>();
}
}
}
public static float GolbalAlpha { get; set; }
#endregion
#region//构造函数
public UIAlphaAnimation()
: base(UIAnimationType.Alpha)
{
}
#endregion
#region//继承基类
public override void Evaluate(float value)
{
var curValue = Mathf.Lerp(_startValue, _endValue, value) * GolbalAlpha;
if(curValue < 0.002f)
{
curValue = 0.002f;
}
if (_handlePanel != null)
{
_handlePanel.alpha = curValue;
}
else if (_handleWidget != null)
{
_handleWidget.alpha = curValue;
}
if (_handleForm != null)
{
//如果是UI同步alpha到其子UI
for (int i = 0; i < _handleForm.ChildList.Count; ++i)
{
var form = _handleForm.ChildList[i] as UINormalForm;
if(form != null)
{
form.MainPanel.alpha = curValue;
for (int j = 0; j < form.ChildList.Count; ++j)
{
form.ChildList[j].MainPanel.alpha = curValue;
}
}
}
}
}
protected override void OnStart()
{
if (_handlePanel != null)
{
_handlePanel.alpha = _startValue;
}
if (_handleWidget != null)
{
if (_handleButton != null)
{
_handleWidget.alpha = 1f;
if (_handleButton.normalSprite != null)
{
//访问这个变量调用UIButton的OnInit函数
}
}
_handleWidget.alpha = _startValue;
}
_waitFrame = 2;
}
protected override void OnStop()
{
_handleTrans = null;
_handlePanel = null;
_handleWidget = null;
_handleForm = null;
}
#endregion
}
//缩放动画
public class UIScaleAnimation : UIAnimationBase
{
#region//私有变量
//开始值
private Vector3 _startValue = Vector3.zero;
//结束值
private Vector3 _endValue = Vector3.zero;
//操作的对象
private Transform _handleTrans = null;
//操作的UI
private UINormalForm _handleForm = null;
#endregion
#region//属性
//开始值
public Vector3 StartValue
{
get
{
return _startValue;
}
set
{
_startValue = value;
}
}
//结束值
public Vector3 EndValue
{
get
{
return _endValue;
}
set
{
_endValue = value;
}
}
//操作的对象
public override Transform HandleTrans
{
get
{
return _handleTrans;
}
set
{
_handleForm = null;
_handleTrans = value;
if (_handleTrans != null)
{
_handleForm = _handleTrans.GetComponent<UINormalForm>();
}
}
}
#endregion
#region//构造函数
public UIScaleAnimation()
: base(UIAnimationType.Scale)
{
}
#endregion
#region//继承基类
public override void Evaluate(float value)
{
var curScale = Vector3.Lerp(_startValue, _endValue, value);
if (_handleTrans != null)
{
_handleTrans.localScale = curScale;
if (_handleForm != null)
{
//如果是UI同步缩放到其子UI
for (int i = 0; i < _handleForm.ChildList.Count; ++i)
{
var form = _handleForm.ChildList[i] as UINormalForm;
if (form != null && form.MainPanel.mStarted)
{
form.TransformInst.localScale = curScale;
for (int j = 0; j < form.ChildList.Count; ++j)
{
if(form.ChildList[j].MainPanel.mStarted)
{
form.ChildList[j].TransformInst.localScale = curScale;
}
}
}
}
}
}
}
protected override void OnStart()
{
_waitFrame = 2;
if (_handleTrans != null)
{
if(_endValue.x >= 1)
{
_handleTrans.localScale = _endValue;
}
}
}
protected override void OnStop()
{
_handleTrans = null;
_handleForm = null;
}
#endregion
}
//位移动画
public class UIPositionAnimation : UIAnimationBase
{
#region//私有变量
//开始位置
private Vector3 _startValue = Vector3.zero;
//结束位置
private Vector3 _endValue = Vector3.zero;
//偏移位置
private Vector3 _offsetPos = Vector3.zero;
//操作的对象
private Transform _handleTrans = null;
//操作的UI
private UINormalForm _handleForm = null;
#endregion
#region//属性
//开始位置
public Vector3 StartValue
{
get
{
return _startValue;
}
set
{
_startValue = value;
}
}
//结束位置
public Vector3 EndValue
{
get
{
return _endValue;
}
set
{
_endValue = value;
}
}
//偏移位置
public Vector3 OffsetPos
{
get
{
return _offsetPos;
}
set
{
_offsetPos = value;
}
}
//操作的对象
public override Transform HandleTrans
{
get
{
return _handleTrans;
}
set
{
_handleForm = null;
_handleTrans = value;
if(_handleTrans != null)
{
_handleForm = _handleTrans.GetComponent<UINormalForm>();
}
}
}
#endregion
#region//构造函数
public UIPositionAnimation()
: base(UIAnimationType.Position)
{
}
#endregion
#region//继承基类
public override void Evaluate(float value)
{
var curPos = Vector3.Lerp(_startValue, _endValue, value);
if (_handleTrans != null)
{
//动画播放不改变z值
curPos.z = _handleTrans.localPosition.z;
_handleTrans.localPosition = curPos;
if(_handleForm != null)
{
//如果是UI同步位置到其子UI
for (int i = 0; i < _handleForm.ChildList.Count; ++i)
{
var form = _handleForm.ChildList[i] as UINormalForm;
if (form != null && form.MainPanel.mStarted)
{
curPos.z = form.TransformInst.localPosition.z;
form.TransformInst.localPosition = curPos;
for (int j = 0; j < form.ChildList.Count; ++j)
{
if(form.ChildList[j].MainPanel.mStarted)
{
curPos.z = form.ChildList[j].TransformInst.localPosition.z;
form.ChildList[j].TransformInst.localPosition = curPos;
}
}
}
}
}
}
}
protected override void OnStart()
{
_waitFrame = 2;
}
protected override void OnStop()
{
_handleTrans = null;
_handleForm = null;
}
#endregion
}
//空动画,占位用,持续一段时间什么也不做
public class UIEmptyAnimation : UIAnimationBase
{
#region//私有变量
//操作的对象
private Transform _handleTrans = null;
#endregion
#region//属性
#endregion
#region//构造函数
public UIEmptyAnimation()
: base(UIAnimationType.Empty)
{
}
#endregion
#region//继承基类
public override Transform HandleTrans
{
get
{
return _handleTrans;
}
set
{
_handleTrans = value;
}
}
public override void Evaluate(float value)
{
}
protected override void OnStart()
{
}
protected override void OnStop()
{
}
#endregion
}
//旋转动画
public class UIRotationAnimation : UIAnimationBase
{
#region//私有变量
//开始值
private float _startValue = 0f;
//结束值
private float _endValue = 0f;
//操作的对象
private Transform _handleTrans = null;
//操作的UI
private UINormalForm _handleForm = null;
#endregion
#region//属性
public float StartValue
{
get
{
return _startValue;
}
set
{
_startValue = value;
}
}
public float EndValue
{
get
{
return _endValue;
}
set
{
_endValue = value;
}
}
public override Transform HandleTrans
{
get
{
return _handleTrans;
}
set
{
_handleForm = null;
_handleTrans = value;
if(_handleTrans != null)
{
_handleForm = _handleTrans.GetComponent<UINormalForm>();
}
}
}
#endregion
#region//构造函数
public UIRotationAnimation()
: base(UIAnimationType.Rotation)
{
}
#endregion
#region//继承基类
public override void Evaluate(float value)
{
var curValue = Mathf.Lerp(_startValue, _endValue, value);
if (_handleTrans != null)
{
var euler = _handleTrans.localEulerAngles;
euler.z = curValue;
_handleTrans.localEulerAngles = euler;
if (_handleForm != null)
{
//如果是UI同步旋转到其子UI
for (int i = 0; i < _handleForm.ChildList.Count; ++i)
{
euler = _handleForm.ChildList[i].TransformInst.localEulerAngles;
euler.z = curValue;
_handleForm.ChildList[i].TransformInst.localEulerAngles = euler;
}
}
}
}
protected override void OnStart()
{
}
protected override void OnStop()
{
_handleTrans = null;
_handleForm = null;
}
#endregion
}
}