示例#1
0
        public async UniTask Exit(bool saved)
        {
            ResetAnimation();

            await UnityUtils.Animate(.5f, _curve, t =>
            {
                _mask.alpha = 1f - t;

                float lastAngle = saved ? _lastAngle : -_lastAngle;
                _root.SetLocalEulerAngles(z: Mathf.Lerp(0, lastAngle, t));

                float lastOffset = saved ? _lastOffset : -_lastOffset;
                _root.SetAnchoredPosition(x: Mathf.Lerp(0, lastOffset, t));
            });
        }
示例#2
0
        public async UniTask Enter(IPersonEntry entry)
        {
            ResetAnimation();

            _thumbnailImage.SetTexture(entry.Thumbnail);
            _nameText.text        = $"{entry.Name}, {entry.Age}";
            _descriptionText.text = entry.Description;

            await UnityUtils.Animate(.5f, _curve, t =>
            {
                _mask.alpha        = t;
                float initialDepth = _initialDepth / _root.lossyScale.z;
                _root.SetAnchoredPosition(z: Mathf.Lerp(initialDepth, 0f, t));
            });
        }
示例#3
0
        async UniTask Fade(bool show)
        {
            if (show)
            {
                gameObject.SetActive(true);
            }

            await UnityUtils.Animate(0.5f, AnimationCurve.EaseInOut(0, 0, 1, 1), t =>
            {
                _group.alpha = show ? t : 1 - t;
            });

            if (!show)
            {
                gameObject.SetActive(false);
                _mediaPlayer.Stop();
            }
        }