//배경 체인지시 바꿀배경을 뒤(BackQuad)에다 두고 현재 배경은 앞(QuadFront)에다 둔다 public void StartChangeBackground(eBackgroundMat _changeBackground, float _fChangeValue = 0.5f) { bIsPlay = true; fTimer = 0.0f; fChangedValue = _fChangeValue; StartCoroutine(ChangeBackground(_changeBackground)); }
public IEnumerator ChangeBackground(eBackgroundMat _changeBackground) { //처음에는 무조건 false 다음 부터는 On/Off if (isFirstOn == false) { isFirstOn = true; isQuadBack = false; } else { if (isQuadBack == false) { isQuadBack = true; } else { isQuadBack = false; } } Color QuadBackColor; Color QuadFrontColor; Material QuadBackMaterial; Material QuadFrontMaterial; isQuadChangeFinsihed = false; //아직 바뀌지 않았다. if (isQuadBack == false) { QuadBackMaterial = backGroundMaterials [(int)_changeBackground]; QuadBackMaterial.color = new Color(QuadBackMaterial.color.r, QuadBackMaterial.color.g, QuadBackMaterial.color.b, fAlphaMax); QuadBack.material = QuadBackMaterial; QuadFrontMaterial = QuadFront.material; } else { QuadBackMaterial = backGroundMaterials [(int)_changeBackground]; QuadBackMaterial.color = new Color(QuadBackMaterial.color.r, QuadBackMaterial.color.g, QuadBackMaterial.color.b, fAlphaMax); QuadFront.material = QuadBackMaterial; QuadFrontMaterial = QuadBack.material; } while (true) { if (isQuadBack == false) { fQuadBackAlpha = QuadBackMaterial.color.a; fQuadFrontAlpha = QuadFrontMaterial.color.a; fQuadBackAlpha += Time.deltaTime * fChangedValue; fQuadFrontAlpha -= Time.deltaTime * fChangedValue; QuadBackColor = new Color(QuadBack.materials [0].color.r, QuadBack.materials [0].color.g, QuadBack.materials [0].color.b, fQuadBackAlpha); QuadFrontColor = new Color(QuadFront.materials [0].color.r, QuadFront.materials [0].color.g, QuadFront.materials [0].color.b, fQuadFrontAlpha); } else { fQuadBackAlpha = QuadBackMaterial.color.a; fQuadFrontAlpha = QuadFrontMaterial.color.a; fQuadBackAlpha += Time.deltaTime * fChangedValue; fQuadFrontAlpha -= Time.deltaTime * fChangedValue; QuadFrontColor = new Color(QuadFront.materials [0].color.r, QuadFront.materials [0].color.g, QuadFront.materials [0].color.b, fQuadBackAlpha); QuadBackColor = new Color(QuadBack.materials [0].color.r, QuadBack.materials [0].color.g, QuadBack.materials [0].color.b, fQuadFrontAlpha); } QuadBack.materials [0].color = QuadBackColor; QuadFront.materials [0].color = QuadFrontColor; fTimer += Time.deltaTime; if (fQuadFrontAlpha <= 0 || fTimer >= 3.0f) { //Debug.Log ("배경바꾸기 완료"); //앞뒤 바뀐다 bIsPlay = false; if (isQuadBack == false) { QuadBack.gameObject.transform.SetAsLastSibling(); isQuadChangeFinsihed = true; } else { QuadFront.gameObject.transform.SetAsLastSibling(); isQuadChangeFinsihed = true; } yield break; } yield return(null); } }