// Start is called before the first frame update void Start() { red = GetComponent <Image>().color.r; green = GetComponent <Image>().color.g; blue = GetComponent <Image>().color.b; fade = FADE.FADE_IN; }
//// 実際の動作 //// void Update() { // フェード実行メソッド実行済み if (state != FADE.STAY) { // フェードインとフェードアウトで逆動作 if (state == FADE.OUT) { time += Time.deltaTime; } else if (state == FADE.IN) { time -= Time.deltaTime; } // 今回はフェードがUIの透明度でのフェードなのでこの動作 float a = time / fadeTime; var color = image.color; color.a = a; image.color = color; // フェード終了 if (state == FADE.OUT && color.a >= 1 || state == FADE.IN && color.a <= 0) { state = FADE.STAY; } } }
IEnumerator FadeEffect(FADE mode, Image img) { Color colorSource; // 초기 색상 Color colorDestination; // 끝 색상 if (mode == FADE.IN) // 점점 맑아지는 효과 { colorSource = Color.black; colorDestination = Color.clear; } else // 점점 어두워지는 효과 { colorSource = Color.clear; colorDestination = Color.black; } float startTime = Time.realtimeSinceStartup; // 시작시간 float endTime = startTime + fadeTime; // 끝 시간 while (endTime > Time.realtimeSinceStartup) { img.color = Color.Lerp(colorSource, colorDestination, (Time.realtimeSinceStartup - startTime) / fadeTime); yield return(null); } }
IEnumerator FadeEffect(FADE mode) { Color colorSource; Color colorDestination; Time.timeScale = 0f; if (mode == FADE.IN) // 점점 맑아지는 효과 { colorSource = Color.black; colorDestination = Color.clear; } else { colorSource = Color.clear; colorDestination = Color.black; } GameObject obj = Instantiate(preSceneFade); DontDestroyOnLoad(obj); Image img = obj.GetComponentInChildren <Image>(); float startTime = Time.realtimeSinceStartup; float endTime = startTime + 1f; while (endTime > Time.realtimeSinceStartup) { img.color = Color.Lerp(colorSource, colorDestination, (Time.realtimeSinceStartup - startTime) / fadeTime); yield return(null); } Destroy(obj); Time.timeScale = 1f; }
//// フェードイン実行用メソッド //// public void FadeInPlay() { // 待機状態(フェード実行前)の時 if (state == FADE.STAY) { time = fadeTime; state = FADE.IN; } }
private float fadeTime = 0.5f; // かける時間 //// フェードアウト実行用メソッド //// public void FadeOutPlay() { // 待機状態(フェード実行前)の時 if (state == FADE.STAY) { time = 0f; state = FADE.OUT; } }
/// <summary> /// <para> 작 성 자 : 이승엽 </para> /// <para> 작 성 일 : 2020.04.04 </para> /// <para> 내 용 : 텍스트를 Fade처리하는 메서드 </para> /// </summary> public void Func_Fade(FADE _fade, Text _fadeText) { if (_fade == FADE.In) { _fadeText.DOFade(0f, fadeTime); } else { _fadeText.DOFade(1f, fadeTime); } }
/// <summary> /// <para> 작 성 자 : 이승엽 </para> /// <para> 작 성 일 : 2020.04.04 </para> /// <para> 내 용 : 이미지를 Fade처리하는 메서드 </para> /// </summary> public void Func_Fade(FADE _fade, Image _fadeImage) { if (_fade == FADE.In) { _fadeImage.DOFade(0f, fadeTime); _fadeImage.raycastTarget = false; } else // Fade Out { _fadeImage.raycastTarget = true; _fadeImage.DOFade(1f, fadeTime); } }
public void Fade(FADE fadeDir, float fadeDuration, float StartDelay) { if (img != null) { if (fadeDir == FADE.FadeIn) { StartCoroutine(FadeCoroutine(1f, 0f, fadeDuration, StartDelay, true)); } if (fadeDir == FADE.FadeOut) { StartCoroutine(FadeCoroutine(0f, 1f, fadeDuration, StartDelay, false)); } } }
//페이드인아웃 관리 #region ------------------------------[UIEffect]------------------------------ //들어간 게임오브젝트가 어떤형식의 이미지인지 확인해서 페이드 인 아웃 IEnumerator FadeInOut(Image _image, FADE _inout, float _time) { float resettime = Time.time; Color color; color = _image.color; while (color.a < 1 || color.a > 0) { //러프로 부드럽게 페이드 관리 color.a = Mathf.Lerp(1 - (byte)_inout, (byte)_inout, (Time.time - resettime) / _time); //이미지의 알파가 1이면 페이드아웃 0이면 페이드인 _image.color = color; if (color.a == (byte)_inout) { break; } yield return(null); } }
// Update is called once per frame void Update() { if (fade != FADE.FADE_NONE) {// フェード処理中 if (FADE.FADE_OUT == fade) { // フェードアウト処理 alfa += speed; // α値を加算して画面を消していく if (alfa >= 1.0f) { // フェードアウト終了 alfa = 1.0f; m_bChage = true; } // テクスチャ更新 GetComponent <Image>().color = new Color(red, green, blue, alfa); } else if (FADE.FADE_IN == fade) { // フェードイン処理 alfa -= speed; // α値を加算して画面を浮き上がらせていく if (alfa <= 0.0f) { // フェード処理終了 alfa = 0.0f; fade = FADE.FADE_NONE; m_bChage = false; // 終わり } } // テクスチャ更新 GetComponent <Image>().color = new Color(red, green, blue, alfa); } }
// Update is called once per frame void Update () { switch (NowFade) { case FADE.FADE_OUT: if(OutAnimation()){ NowFade = FADE.FADE_ANIMATION; } break; case FADE.FADE_ANIMATION: if(FadeAnimation()){ GameMain.NowScene = NextScene; NowFade = FADE.FADE_IN; } break; case FADE.FADE_IN: if(FadeIn()){ TopGear.transform.localEulerAngles = new Vector3(0,0,0); BottomGear.transform.localEulerAngles = new Vector3(0,0,0); NowFade = FADE.FADE_NONE; } break; case FADE.FADE_NONE: break; } }
// フェード開始 public void SetFade() { fade = FADE.FADE_OUT; }
public static void FadeRun(GAME_SCENE scene){ NextScene = scene; NowFade = FADE.FADE_OUT; }