public void TransitionState(OnEndFadeIn FadeIn,OnEndFadeOut FadeOut,_TransitionType TT)
    {
        switch (TT) {
        case _TransitionType.FadeOut_In:
            CurrentEffectObj = Instantiate (EffectObj)as GameObject;
            CurrentEffectScript = CurrentEffectObj.GetComponentInChildren<Effects> ();
            CurrentEffectScript.EndFadeOutEvent += () => {
                FadeOut();
                doFadeIn ();
            };

            CurrentEffectScript.EndFadeInEvent += () => {
                FadeIn ();
                Destroy (CurrentEffectObj);
            };

            doFadeOut ();
            break;

        case _TransitionType.No_Effect:
            FadeOut ();
            FadeIn ();
            break;
        }
    }
    public void FadeOut_FadeIn_Transition(OnEndFadeIn FadeIn,OnEndFadeOut Fadeout)
    {
        CurrentEffectObj = Instantiate (EffectObj)as GameObject;
        CurrentEffectScript = CurrentEffectObj.GetComponentInChildren<Effects> ();
        CurrentEffectScript.EndFadeOutEvent += () => {
            Fadeout ();
            doFadeIn ();
        };

        CurrentEffectScript.EndFadeInEvent += () => {
            FadeIn ();
            Destroy (CurrentEffectObj);
        };

        doFadeOut ();
    }