Пример #1
0
        //3D座標を指定するUGUIの場合は親を設定するメリットがないので用意しない
        /// <summary>
        /// 指定された場所に指定された設定でUGUIのメッセージを表示する
        /// </summary>
        public void ShowMessage(string message, Vector3 position, Quaternion rotation, FontSettings settings)
        {
            AbstractUGUIText text = textPool.GetInstance();

            text.transform.SetPositionAndRotation(uiCamera.WorldToScreenPoint(position), rotation);

            InitializeUGUIText(text, message, settings);

            StartCoroutine(settings.showAnimation.GetAnimation(text, settings.showAnimationTime).OnCompleted(() =>
            {
                if (settings.limitLife <= 0.0f)
                {
                    StartCoroutine(settings.hideAnimation.GetAnimation(text, settings.hideAnimationTime).OnCompleted(() =>
                    {
                        textPool.ReturnInstance(text);
                    }));
                }
                else
                {
                    KKUtilities.Delay(settings.limitLife, () =>
                    {
                        StartCoroutine(settings.hideAnimation.GetAnimation(text, settings.hideAnimationTime).OnCompleted(() =>
                        {
                            textPool.ReturnInstance(text);
                        }));
                    }, this);
                }
            }));
        }
Пример #2
0
        /// <summary>
        /// 指定された場所に指定された設定でUGUIのメッセージを表示する
        /// </summary>
        public void ShowMessage(string message, Vector2 localPosition, Quaternion localRotation, Transform parent, FontSettings settings)
        {
            AbstractUGUIText text = textPool.GetInstance();

            InitializeUGUIText(text, message, settings);
            text.RectTransform.SetParent(parent);
            text.RectTransform.anchoredPosition = localPosition;
            text.RectTransform.localRotation    = localRotation;


            StartCoroutine(settings.showAnimation.GetAnimation(text, settings.showAnimationTime).OnCompleted(() =>
            {
                if (settings.limitLife <= 0.0f)
                {
                    StartCoroutine(settings.hideAnimation.GetAnimation(text, settings.hideAnimationTime).OnCompleted(() =>
                    {
                        textPool.ReturnInstance(text);
                    }));
                }
                else
                {
                    KKUtilities.Delay(settings.limitLife, () =>
                    {
                        StartCoroutine(settings.hideAnimation.GetAnimation(text, settings.hideAnimationTime).OnCompleted(() =>
                        {
                            textPool.ReturnInstance(text);
                        }));
                    }, this);
                }
            }));
        }
Пример #3
0
        public void StartCountDown(Action onEndCountDown, Action onNoThanks)
        {
            if (countDownCoroutine != null)
            {
                StopCoroutine(countDownCoroutine);
            }

            noThanksButton.OnClickEvent.RemoveAllListeners();
            noThanksButton.AddListener(() =>
            {
                if (onNoThanks != null)
                {
                    onNoThanks.Invoke();
                }
            });

            countDownCoroutine = StartCoroutine(KKUtilities.FloatLerp(timeLimit, (t) =>
            {
                timeLimitGauge.Image.fillAmount = 1.0f - t;
            }).OnCompleted(() =>
            {
                if (onEndCountDown != null)
                {
                    onEndCountDown.Invoke();
                }
                gameObject.SetActive(false);
                countDownCoroutine = null;
            }));
        }
Пример #4
0
        /// <summary>
        /// 指定された場所に指定された設定で3Dのメッセージを表示する
        /// </summary>
        public void ShowMessage3D(string message, Vector3 position, Quaternion rotation, Transform parent, FontSettings settings)
        {
            AbstractTextMesh text = textMeshPool.GetInstance();

            InitializeTextMesh(text, message, settings);

            text.transform.SetParent(parent);
            text.transform.SetPositionAndRotation(position, rotation);

            StartCoroutine(settings.showAnimation.GetAnimation(text, settings.showAnimationTime).OnCompleted(() =>
            {
                if (settings.limitLife <= 0.0f)
                {
                    StartCoroutine(settings.hideAnimation.GetAnimation(text, settings.hideAnimationTime).OnCompleted(() =>
                    {
                        textMeshPool.ReturnInstance(text);
                    }));
                }
                else
                {
                    KKUtilities.Delay(settings.limitLife, () =>
                    {
                        StartCoroutine(settings.hideAnimation.GetAnimation(text, settings.hideAnimationTime).OnCompleted(() =>
                        {
                            textMeshPool.ReturnInstance(text);
                        }));
                    }, this);
                }
            }));
        }
        void Update()
        {
            if (player == null)
            {
                return;
            }
            if (!IsWork)
            {
                return;
            }

            if (Input.GetKeyDown(KeyCode.E))
            {
                ChangeMouseControl();
            }

            Vector2 inputVector = GetInputVector();

            rotationX += inputVector.x * rotationSpeedX * Time.deltaTime;
            rotationY += inputVector.y * rotationSpeedY * Time.deltaTime;


            rotationX = rotationX % 360.0f;
            rotationY = Mathf.Clamp(rotationY, minRotationY, maxRotationY);

            Vector3 targetPosition = transform.position + KKUtilities.SphereCoordinate(rotationX, rotationY, 1.0f);

            transform.LookAt(targetPosition);

            player.transform.localRotation = Quaternion.Euler(new Vector3(0.0f, transform.eulerAngles.y, 0.0f));
        }
Пример #6
0
        /// <summary>
        /// 指定された地点にパーティクルを配置し、limitLife秒後にactiveをfalseにする
        /// </summary>
        public PoolMonoBehaviour Play(string name, Vector3 position, Quaternion rotation, float limitLife)
        {
            PoolMonoBehaviour particle = Play(name, position, rotation);

            KKUtilities.Delay(limitLife, () => particle.gameObject.SetActive(false), this);

            return(particle);
        }
Пример #7
0
        /// <summary>
        /// 指定された地点にパーティクルを配置し、limitLife秒後にactiveをfalseにする
        /// </summary>
        public PoolMonoBehaviour Play(string name, Vector3 localPosition, Quaternion localRotation, float limitLife, Transform parent)
        {
            PoolMonoBehaviour particle = Play(name, localPosition, localRotation, parent);

            KKUtilities.Delay(limitLife, () => particle.gameObject.SetActive(false), this);

            return(particle);
        }
Пример #8
0
        public PoolMonoBehaviour Play(string name, Vector3 position, float limitLife, Transform parent)
        {
            PoolMonoBehaviour spriteAnimation = Play(name, position, parent);

            KKUtilities.Delay(limitLife, () => spriteAnimation.gameObject.SetActive(false), this);

            return(spriteAnimation);
        }
Пример #9
0
        public static Coroutine Fade(this UGUIParts self, float duration, float targetAlpha)
        {
            var startAlpha = self.Alpha;

            return(self.StartCoroutine(KKUtilities.FloatLerp(duration, (t) =>
            {
                self.Alpha = Mathf.Lerp(startAlpha, targetAlpha, Easing.InQuad(t));
            })));
        }
Пример #10
0
        public static Coroutine LocalMove(this MonoBehaviour mono, float duration, Vector3 targetPos, EaseType ease, bool isScalable = true)
        {
            Vector3 startPos = mono.transform.localPosition;

            return(mono.StartCoroutine(KKUtilities.FloatLerp(duration, (t) =>
            {
                mono.transform.localPosition = Vector3.LerpUnclamped(startPos, targetPos, Easing.GetEase(t, ease));
            }, isScalable)));
        }
Пример #11
0
 public static Coroutine PopUp(this UGUIParts self, float duration)
 {
     self.transform.localScale = Vector3.zero;
     self.gameObject.SetActive(true);
     return(self.StartCoroutine(KKUtilities.FloatLerp(duration, (t) =>
     {
         self.transform.localScale = Vector3.LerpUnclamped(Vector3.zero, Vector3.one, Easing.OutBack(t));
     })));
 }
Пример #12
0
 protected override IEnumerator TutorialAnimation()
 {
     while (true)
     {
         yield return(KKUtilities.FloatLerp(speed, (t) =>
         {
             fingerImage.RectTransform.anchoredPosition = Vector2.LerpUnclamped(startPoint.anchoredPosition, endPoint.anchoredPosition, curve.Evaluate(t));
         }));
     }
 }
Пример #13
0
        public void HideMenu()
        {
            StopAllCoroutines();

            StartCoroutine(KKUtilities.FloatLerp(0.3f, (t) =>
            {
                container.alpha = Mathf.Lerp(1.0f, 0.0f, t);
            }).OnCompleted(() =>
            {
                container.gameObject.SetActive(false);
            }));
        }
Пример #14
0
        protected override IEnumerator TutorialAnimation()
        {
            float maxScale = 1.2f;

            while (true)
            {
                yield return(KKUtilities.FloatLerp(speed, (t) =>
                {
                    fingerImage.transform.localScale = Vector3.Lerp(Vector3.one, Vector3.one * maxScale, curve.Evaluate(t));
                }));
            }
        }
Пример #15
0
 void ChangeVolume(float startVolume, float endVolume, float duration, Action callback = null)
 {
     StartCoroutine(KKUtilities.FloatLerp(duration, (t) =>
     {
         Volume = Mathf.Lerp(startVolume, endVolume, t);
     }).OnCompleted(() =>
     {
         if (callback != null)
         {
             callback.Invoke();
         }
     }));
 }
Пример #16
0
        IEnumerator NotificationAnimation()
        {
            var wait = new WaitForSeconds(0.75f);

            while (true)
            {
                yield return(KKUtilities.FloatLerp(2.0f, (t) =>
                {
                    transform.localScale = Vector3.LerpUnclamped(Vector3.one, Vector3.one * 1.2f, scaleCurve.Evaluate(t));
                }));

                yield return(wait);
            }
        }
Пример #17
0
        public virtual void Hide()
        {
            StartCoroutine(KKUtilities.FloatLerp(showAnimationTime * 0.5f, (t) =>
            {
                panel.Alpha = Mathf.Lerp(panel.DefaultAlpha, 0.0f, Easing.OutQuad(t));
            }));

            StartCoroutine(hideAnimation.GetAnimation(this, hideAnimationTime).OnCompleted(() =>
            {
                panel.gameObject.SetActive(false);
                Container.SetActive(false);
                OnHideAnimationEnd.Invoke();
            }));
        }
Пример #18
0
        //loopするSEを鳴らしたい場合は止める条件を設定する
        public void LoopPlay(AudioClip clip, float limitLife, Action callback, float volume = 1.0f, float pitch = 1.0f)
        {
            Source.loop = true;
            Play(clip, volume, pitch);

            KKUtilities.Delay(limitLife, () =>
            {
                Source.Stop();
                if (callback != null)
                {
                    callback.Invoke();
                }
            }, this);
        }
Пример #19
0
        /// <summary>
        /// 指定された地点に瞬間的なパーティクルを再生する
        /// </summary>
        public void PlayOneShot(string name, Vector3 position, Quaternion rotation, Transform parent)
        {
            MomentParticle particle = GetMomentParticle(name);

            if (particle == null)
            {
                return;
            }

            particle.transform.SetPositionAndRotation(position, rotation);
            particle.transform.SetParent(parent);
            particle.Play();

            KKUtilities.Delay(0.1f, () => particle.transform.SetParent(transform), this);
        }
Пример #20
0
        public virtual void Show()
        {
            panel.gameObject.SetActive(true);
            Container.SetActive(true);
            Alpha = 1;
            StartCoroutine(KKUtilities.FloatLerp(showAnimationTime * 0.5f, (t) =>
            {
                panel.Alpha = Mathf.Lerp(0.0f, panel.DefaultAlpha, Easing.InQuad(t));
            }));

            StartCoroutine(showAnimation.GetAnimation(this, showAnimationTime).OnCompleted(() =>
            {
                OnShowAnimationEnd.Invoke();
            }));
        }
Пример #21
0
        protected override void OnClick()
        {
            Button.interactable = false;
            Vector3 startPos = buttonImage.transform.position;
            Vector3 endPos   = shadowImage.transform.position;

            StartCoroutine(KKUtilities.FloatLerp(0.15f, (t) =>
            {
                buttonImage.transform.position = Vector3.Lerp(startPos, endPos, Easing.Yoyo(t));
            }, false).OnCompleted(() =>
            {
                base.OnClick();
                Button.interactable = true;
            }));
        }
Пример #22
0
        IEnumerator Fade(Color startColor, Color endColor, float duration, Action endCallback, bool finishedPanelActive)
        {
            panel.color = startColor;
            panel.gameObject.SetActive(true);

            yield return(StartCoroutine(KKUtilities.FloatLerp(duration, (t) =>
            {
                panel.color = Color.Lerp(startColor, endColor, t);
            })
                                        ));

            fadeCoroutine = null;
            panel.gameObject.SetActive(finishedPanelActive);
            if (endCallback != null)
            {
                endCallback.Invoke();
            }
        }
Пример #23
0
        /// <summary>
        /// 指定された地点に瞬間的なパーティクルを再生する
        /// </summary>
        public void PlayOneShot(string name, Vector3 position, Quaternion rotation, Color color, Transform parent)
        {
            MomentParticle particle = GetMomentParticle(name);

            if (particle == null)
            {
                return;
            }

            particle.transform.SetPositionAndRotation(position, rotation);
            particle.transform.SetParent(parent);

            var main         = particle.ParticleSystem.main;
            var defaultColor = main.startColor;

            main.startColor = color;
            particle.Play();
            main.startColor = defaultColor;

            KKUtilities.Delay(main.duration, () => particle.transform.SetParent(transform), this);
        }
Пример #24
0
        void ChangeStateAnimation()
        {
            StopAllCoroutines();
            var start = circle.RectTransform.anchoredPosition;
            var end   = IsOn ? selectedCirclePosition : unSelectedCirclePosition;

            if (!gameObject.activeInHierarchy)
            {
                Refresh();
                return;
            }

            AudioManager.Instance.PlaySE("Click", 0.3f);
            StartCoroutine(KKUtilities.FloatLerp(0.15f, (t) =>
            {
                circle.RectTransform.anchoredPosition = Vector2.Lerp(start, end, Easing.OutQuad(t));
            }).OnCompleted(() =>
            {
                Refresh();
            }));
        }
Пример #25
0
        public void HideDialog()
        {
            if (currentViewDialog.Count <= 0)
            {
                return;
            }
            Dialog     dialog = currentViewDialog.Dequeue();
            DialogPool dialogPool;

            if (!dialogDictionary.TryGetValue(dialog.DialogName, out dialogPool))
            {
                return;
            }

            StartCoroutine(KKUtilities.WaitAction(dialog.OnHideAnimationEnd, () =>
            {
                dialogPool.ReturnInstance(dialog);
            }));

            dialog.Hide();
        }
Пример #26
0
        public void LoadSceneAsync(string loadSceneName, Color fadeColor, Action <float> loading, float duration = 1.0f)
        {
            FadeOut(duration, fadeColor, () =>
            {
                AsyncOperation asyncOperation = LoadSceneAsync(loadSceneName);
                bool isDone = false;
                KKUtilities.While(() =>
                {
                    if (loading != null)
                    {
                        loading.Invoke(asyncOperation.progress);
                    }
                    isDone = asyncOperation.isDone;
                    //ロードが終わったらフェードアウトする
                    if (isDone)
                    {
                        FadeIn(duration, fadeColor);
                    }

                    return(!isDone);
                }, this);
            });
        }
Пример #27
0
 public MyCoroutine GetAnimation(UIParts parts, float duration)
 {
     return(new MyCoroutine(KKUtilities.FloatLerp(duration, (t) => logic(parts, t))));
 }
Пример #28
0
 /// <summary>
 /// predicateが真を返すまで待機し、その後actionを実行する
 /// </summary>
 public static Coroutine WaitUntil(this MonoBehaviour mono, Func <bool> predicate, Action action)
 {
     return(mono.StartCoroutine(KKUtilities.WaitUntil(predicate, action)));
 }
Пример #29
0
 /// <summary>
 /// アクションが呼ばれるまで待機する
 /// </summary>
 public static Coroutine WaitAction <T1, T2>(this MonoBehaviour mono, MyUnityEvent <T1, T2> action, Action callback = null)
 {
     return(mono.StartCoroutine(KKUtilities.WaitAction(action, callback)));
 }
Пример #30
0
 /// <summary>
 /// 1フレームに1回actionを実行する(updateの戻り値は継続するか?)
 /// </summary>
 public static Coroutine DoWhile(this MonoBehaviour mono, Func <bool> update)
 {
     return(mono.StartCoroutine(KKUtilities.DoWhile(update)));
 }