using UnityEngine; /// /// Tween the object's position. /// [RequireComponent(typeof(RectTransform))] public class TweenAnchorMin : Tweener { public Vector2 from; public Vector2 to; RectTransform mTrans; public RectTransform cachedTransform { get { if (mTrans == null) { mTrans = GetComponent(); if (mTrans == null) mTrans = gameObject.AddComponent(); } return mTrans; } } /// /// Tween's current value. /// public Vector2 value { get { return cachedTransform.anchorMin; } set { cachedTransform.anchorMin = value; } } /// /// Tween the value. /// protected override void OnUpdate(float factor, bool isFinished) { value = from * (1f - factor) + to * factor; } /// /// Start the tweening operation. /// static public TweenSize Begin(GameObject go, float duration, Vector2 size) { TweenSize comp = Tweener.Begin(go, duration); comp.from = comp.value; comp.to = size; if (duration <= 0f) { comp.Sample(1f, true); comp.enabled = false; } return comp; } [ContextMenu("Set 'From' to current value")] public override void SetStartToCurrentValue() { from = value; } [ContextMenu("Set 'To' to current value")] public override void SetEndToCurrentValue() { to = value; } [ContextMenu("Assume value of 'From'")] void SetCurrentValueToStart() { value = from; } [ContextMenu("Assume value of 'To'")] void SetCurrentValueToEnd() { value = to; } }