Exemple #1
0
    private Tween PrePlay(TweenPack.Attribute attribute)
    {
        Tween tween = new Tween();

        tween.Owner = gameObject;

        tween.isNeedFrom = attribute.isNeedFrom;

        tween.SetTweenType(attribute.TweenType);
        tween.SetEaseType(attribute.EaseType);
        tween.SetTo(attribute.To);
        tween.SetColor(attribute.Color);
        tween.SetFade(attribute.Fade);
        tween.SetToText(attribute.ToText);
        tween.SetDuration(attribute.Duration);
        tween.SetDelayTime(attribute.DelayTime);
        tween.SetLoop(attribute.Loop);
        tween.SetLoopType(attribute.LoopType);
        tween.SetPosFrom(attribute.FromPos);
        tween.SetColorFrom(attribute.FromColor);
        tween.SetFadeFrom(attribute.FromFade);

        m_loadingTweens.Add(attribute.TweenName, tween);
        return(tween);
    }
Exemple #2
0
 /// <summary>
 /// 播放一个动画片段
 /// </summary>
 /// <param name="attribute">动画的参数</param>
 private void Play(TweenPack.Attribute attribute)
 {
     if (m_loadingTweens.ContainsKey(attribute.TweenName))
     {
         m_loadingTweens[attribute.TweenName].Play();
         m_tweens.Add(attribute.TweenName, m_loadingTweens[attribute.TweenName]);
     }
     else
     {
         Tween tween = PrePlay(attribute);
         tween.Play();
         m_tweens.Add(attribute.TweenName, tween);
     }
 }
Exemple #3
0
    private void DrawTweenList(UnityEngine.Object[] targets)
    {
        TweenPack tweenPack = targets[0] as TweenPack;

        for (int i = 0; i < tweenPack.Attributes.Count;)
        {
            bool isEqual = true;
            for (int j = 1; j < targets.Length; j++)
            {
                if (!tweenPack.Attributes[i].Equals((targets[j] as TweenPack).Attributes[j]))
                {
                    isEqual = false;
                    break;
                }
            }

            if (isEqual)
            {
                m_attribute.Copy(tweenPack.Attributes[i]);
                string header = m_attribute.TweenName;
                if (LayoutUtility.Foldout(header))
                {
                    LayoutUtility.BeginContents();
                    if (GUILayout.Button("", "ToggleMixed", GUILayout.Width(20f)))
                    {
                        UnityEditor.Undo.RecordObjects(targets, "Remove Tween Attribute");
                        for (int j = 0; j < targets.Length; ++j)
                        {
                            (targets[j] as TweenPack).Attributes.RemoveAt(i);
                            EditorUtility.SetDirty(targets[j]);
                        }
                    }
                    else
                    {
                        DrawTweenAttribute(m_attribute);
                        if (!m_attribute.Equals(tweenPack.Attributes[i]))
                        {
                            UnityEditor.Undo.RecordObjects(targets, "Modify Tween Attribute");
                            for (int j = 0; j < targets.Length; ++j)
                            {
                                (targets[j] as TweenPack).Attributes[i].Copy(m_attribute);
                                EditorUtility.SetDirty(targets[j]);
                            }
                        }
                    }
                    LayoutUtility.EndContents();
                }
            }
            ++i;
        }

        //加入新的Tween
        if (LayoutUtility.Foldout("Add Tween Attribute"))
        {
            LayoutUtility.BeginContents();
            TweenType type = (TweenType)EditorGUILayout.EnumPopup("Tween Type", TweenType.None);
            if (type != TweenType.None)
            {
                UnityEditor.Undo.RecordObjects(targets, "Add Tween Attribute");
                for (int j = 0; j < targets.Length; ++j)
                {
                    TweenPack.Attribute attribute = new TweenPack.Attribute();
                    attribute.TweenType = type;
                    switch (type)
                    {
                    case TweenType.Position:
                        attribute.TweenName = "Position Tween";
                        break;

                    case TweenType.Rotation:
                        attribute.TweenName = "Rotation Tween";
                        break;

                    case TweenType.BlendableScale:
                        attribute.TweenName = "Scale Tween";
                        break;

                    case TweenType.Fade:
                        attribute.TweenName = "Fade Tween";
                        break;

                    case TweenType.Color:
                        attribute.TweenName = "Color Tween";
                        break;

                    case TweenType.UIColor:
                        attribute.TweenName = "UIFade Tween";
                        break;

                    case TweenType.UIFade:
                        attribute.TweenName = "UIFade Tween";
                        break;

                    case TweenType.UIPosition:
                        attribute.TweenName = "UIPosition Tween";
                        break;

                    case TweenType.LocalPosition:
                        attribute.TweenName = "LocalPosition Tween";
                        break;

                    case TweenType.LocalRotation:
                        attribute.TweenName = "LocalRotation Tween";
                        break;

                    case TweenType.LocalScale:
                        attribute.TweenName = "LocalScale Tween";
                        break;

                    case TweenType.UIText:
                        attribute.TweenName = "UIText Tween";
                        break;

                    case TweenType.BlendablePosition:
                        attribute.TweenName = "BlendablePosition Tween";
                        break;
                    }
                    (targets[j] as TweenPack).Attributes.Add(attribute);
                    EditorUtility.SetDirty(targets[j]);
                }
            }
            LayoutUtility.EndContents();
        }
    }
Exemple #4
0
    /// <summary>
    /// 绘制attribute面板
    /// </summary>
    /// <param name="attribute"></param>
    private void DrawTweenAttribute(TweenPack.Attribute attribute)
    {
        attribute.TweenName  = EditorGUILayout.TextField("Tween Name", attribute.TweenName);
        attribute.TweenType  = (TweenType)EditorGUILayout.EnumPopup("Tween Type", attribute.TweenType);
        attribute.DelayTime  = EditorGUILayout.FloatField("Delay Time", attribute.DelayTime);
        attribute.EaseType   = (Ease)EditorGUILayout.EnumPopup("Ease Type", attribute.EaseType);
        attribute.isNeedFrom = EditorGUILayout.Toggle("IsNeedFrom", attribute.isNeedFrom);
        switch (attribute.TweenType)
        {
        case TweenType.Position:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.To = EditorGUILayout.Vector3Field("To", attribute.To);
            break;

        case TweenType.Rotation:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.To = EditorGUILayout.Vector3Field("To", attribute.To);
            break;

        case TweenType.BlendableScale:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.To = EditorGUILayout.Vector3Field("To", attribute.To);
            break;

        case TweenType.Fade:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.Fade = EditorGUILayout.FloatField("To", attribute.Fade);
            break;

        case TweenType.Color:
            if (attribute.isNeedFrom)
            {
                attribute.FromColor = EditorGUILayout.ColorField("From", attribute.FromColor);
            }
            attribute.Color = EditorGUILayout.ColorField("To", attribute.Color);
            break;

        case TweenType.UIColor:
            if (attribute.isNeedFrom)
            {
                attribute.FromColor = EditorGUILayout.ColorField("From", attribute.FromColor);
            }
            attribute.Color = EditorGUILayout.ColorField("To", attribute.Color);
            break;

        case TweenType.UIFade:
            if (attribute.isNeedFrom)
            {
                attribute.FromFade = EditorGUILayout.FloatField("From", attribute.FromFade);
            }
            attribute.Fade = EditorGUILayout.FloatField("To", attribute.Fade);
            break;

        case TweenType.UIPosition:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.To = EditorGUILayout.Vector3Field("To", attribute.To);
            break;

        case TweenType.LocalPosition:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.To = EditorGUILayout.Vector3Field("To", attribute.To);
            break;

        case TweenType.LocalRotation:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.To = EditorGUILayout.Vector3Field("To", attribute.To);
            break;

        case TweenType.LocalScale:
            if (attribute.isNeedFrom)
            {
                attribute.FromPos = EditorGUILayout.Vector3Field("From", attribute.FromPos);
            }
            attribute.To = EditorGUILayout.Vector3Field("To", attribute.To);
            break;

        case TweenType.UIText:
            attribute.ToText = EditorGUILayout.TextField("To Text", attribute.ToText);
            break;

        case TweenType.BlendablePosition:
            attribute.To = EditorGUILayout.Vector3Field("Add", attribute.To);
            break;
        }

        attribute.Duration = EditorGUILayout.FloatField("Duration", attribute.Duration);
        attribute.Loop     = EditorGUILayout.IntField("Loop", attribute.Loop);
        attribute.LoopType = (LoopType)EditorGUILayout.EnumFlagsField("Loop Type", attribute.LoopType);
    }