본문 바로가기

Game/Unity

유니티에서 장면전환시 Fade in 효과 구현

유니티에서 장면전환시 Fade in 효과 구현


게임의 시작화면( Start Scene ) 이 완성되었다면 시작화면이 부드럽게 나타나도록 효과를 적용할 때 다음과 같은 방법을 사용할 수 있다


Hierarchy 뷰에 빈 게임 오브젝트를 하나 추가하고 아래의 스크립트를 포함시킨다.

추가된 빈 게임 오브젝트는 시작화면이 나타날 때 Fade In 효과만 보여주고 Destroy() 에 의해 제거된다


#pragma strict


var fadeTexture:Texture; // 임의의 이미지를 드래그하여 설정

internal var startColor:Color = Color(0,0,0,1);

internal var endColor:Color = Color(0,0,0,0);

internal var currentColor:Color;

internal var duration:float = 3.0;


function Start () {

currentColor = startColor;

Destroy(gameObject, duration+1);

}


function OnGUI() {

GUI.depth = -10; //숫자가 낮을수록 나중에 출력되므로 가장 앞에 출력된다

GUI.color = currentColor; // 아래의 텍스쳐가 그려질 때 투명도를 조정한다

GUI.DrawTexture(Rect(0,0,Screen.width,Screen.height), fadeTexture);

}


function FixedUpdate () {

// 점차 투명하게

currentColor = Color.Lerp(startColor, endColor, Time.time/duration);

}


FixedUpdate - 매 프레임별로 호출되지만 시간차가 부정확한 Update와는 달리

일정한 시간 간격차를 두고 한번씩 호출되는 함수. Framerate가 낮으면 한 프레임에 여러번 호출될 수 있으며

Framerate가 높으면 한 프레임에 호출이 안될 수도 있다.

이러한 Framerate와 독립적인 타이머에 의한 호출때문에 Time.deltaTime이 많이 필요한

모든 물리적 연산과 업데이트는 FixedUpdate()가 호출이 완료된 다음 이루어진다.

(Framerate와 독립적이기 때문에 FixedUpdate()메소드 안에선 Time.deltaTime을 사용할 필요가 없다.)


'Game > Unity' 카테고리의 다른 글

[Unity3D] 데이터 Path  (0) 2014.10.17
[Unity3D]MonoBehaviour 생명주기  (0) 2014.10.02
[Unity] 유니티의 메모리 관리  (0) 2014.09.18
[Unity3d] android facebook Release Key Hash 발급.  (0) 2014.09.12
Unity and IOS push notifications  (0) 2014.09.03