Ejemplo n.º 1
0
 public virtual void Hide(Tween.Tweener tweener)
 {
     if (Alpha > 0.0f)
     {
         tweener.TweenTo(this, "Alpha", 0.0f, m_FadeOutTime);
     }
 }
Ejemplo n.º 2
0
 public virtual void Show(Tween.Tweener tweener)
 {
     if (Alpha < 1.0f)
     {
         tweener.TweenTo(this, "Alpha", 1.0f, m_FadeInTime);
     }
 }
Ejemplo n.º 3
0
 public override void Show(Tween.Tweener tweener)
 {
     if (Player.LocalInstance != null && Player.LocalInstance.Controls != null)
     {
         Player.LocalInstance.Controls.EnableLockCursor(false);
     }
     base.Show(tweener);
 }
Ejemplo n.º 4
0
        public override void Hide(Tween.Tweener tweener)
        {
            if (Player.LocalInstance != null && Player.LocalInstance.Controls != null)
            {
                Player.LocalInstance.Controls.EnableLockCursor(true);
            }
            base.Hide(tweener);

            m_SkipThis.animate       = false;
            m_SkipThis.isHighlighted = false;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 逻辑迭代器,相当于携程。同一个 <see cref="LogicTweener"/> 只能设置一次逻辑
        /// <para>可以返回其它的 <see cref="Tweener"/> 实例,将尝试等待他们</para>
        /// <para>不能返回 null,但可以返回实例自身,当作延迟一帧使用</para>
        /// </summary>
        /// <param name="enumerator">一帧一调用的逻辑</param>
        /// <returns><see cref="Tweener"/> 实例自身</returns>
        public Tweener SetLogic(IEnumerator <Tweener> enumerator)
        {
            if (enumerator is null)
            {
                throw new ArgumentNullException(nameof(enumerator));
            }
            else if (Enumerator != null)
            {
                throw new ArgumentException(nameof(Enumerator));
            }

            Enumerator = RunLogic();
            return(this);

            IEnumerator <Tweener> RunLogic()
            {
                while (enumerator.MoveNext())
                {
                    Tweener      tweener = enumerator.Current;
                    TweenerState state   = tweener.State;
                    // 普通的等待一帧
                    if (tweener == this)
                    {
                        yield return(this);
                    }
                    switch (state)
                    {
                    // 一个还未启动的 Tweener,立即启动它,并添加完成时回调激活当前 Tweener
                    case TweenerState.WaitForActivation:
                        TweenService.Remove(this);
                        tweener.OnComplete_Handle += () => TweenService.RestoreImmediately(this);
                        TweenService.Add(tweener);
                        yield return(null);

                        break;

                    // 一个正在运行的 Tweener,添加完成时回调激活当前 Tweener
                    case TweenerState.IsRunnning:
                    case TweenerState.Stop:
                        TweenService.Remove(this);
                        tweener.OnComplete_Handle += () => TweenService.RestoreImmediately(this);
                        yield return(null);

                        break;

                    // 下一帧还是自己
                    case TweenerState.Finish:
                        yield return(this);

                        break;

                    // 一个出现错误无法继续执行的 Tweener,自身变更为 AssetHaveBeenDestroy
                    case TweenerState.AssetHaveBeenDestroy:
                    case TweenerState.Error:
                        yield return(null);

                        break;

                    case TweenerState.ReservedField2:
                    default:
                        throw new Exception($"Not defined operator in {nameof(LogicTweener)}, {nameof(state)} is {state}.");
                    }
                }
            }
        }