본문 바로가기

Unity3D/Multiple Levels

Unity 3D Multiple Levels

유니티 게임에서 다수개의 레벨(Level)을 작성하고 다른 레벨로 전환하는 예제


한개의 게임에 다수개의 장면이 포함되어 있다면 특정 조건에서 다른 장면으로 전환할 필요가 있을 것이다. 유니티에서 한개의 프로젝트에 여러개의 장면(Scene) 을 생성하고 저장할 수 있으므로 한개의 게임 프로그램은 여러개의 장면(Scene)으로 구성되어 있다고도 말할 수 있다.

여기서는 장면을 전환하는 방법에만 집중하여 예제를 작성해보기로 한다


아래 그림과 같이 자동차가 쥬라기 공원 게이트를 통과하는 순간 공룡이 앞에 서 있는 장면으로 전환되도록 스크립트를 작성할 것이다.

게이트 뒤에 Cube를 하나 세우고 Cube가 보이지 않도록 Inspector 뷰에서 MeshRenderer 콤포넌트를 제거하고 IsTrigger 속성에 체크해주면 자동차가 게이트를 통과하는 순간에 OnTriggerEnter() 함수가 실행되므로 이 함수에 Application.LoadLevel() 함수를 호출하여 다른 장면을 실행하면 된다




장면을 저장한다

위의 장면을 저장할 때 MainScene 이라는 이름의 장면(Scene)으로 저장되도록 한다.

File > Save Scene As 를 선택하고 파일 이름에 MainLevel 이라는 이름을 붙여 저장한다.


위의 장면에서 자동차가 쥬라기 공원 게이트를 통과하는 순간 초원에 공룡이 나타나는 장면으로 전환되어야 하므로 또 하나의 장면을 생성하고 공룡 모델을 임포트하여 세워놓고 JP-Scene 라는 이름으로 장면을 저장한다




장면이 파일에 저장되면 File > Build Settings 윈도우에서 한개의 레벨로 등록할 수 있는데  Add Current 버튼을 눌러서 현재 장면을 등록할 수 있으며 등록이 되면 레벨 인덱스 번호가 자동으로 붙여진다. 다수개의 레벨이 등록이 될 때 인덱스 번호를 변경해야 한다면 리스트에서 드래그하여 위 아래 순서를 변경해주면 된다. 2개의 장면이 레벨로 등록된 화면은 다음과 같다




게이트 통과를 탐지할 Cube에 다음과 같은 스크립트를 작성하여 포함시킨다

#pragma strict


function OnTriggerEnter(){

Application.LoadLevel(1);

}


위의 스크립트에서 Application.LoadLevel(1) 에 사용된 숫자 1은 등록된 장면의 인덱스 번호를 의미하며 JP_Scene 이 1번으로 등록되어 있기 때문에 자동차가 게이트를 통과할 때 JP_Scene 이 실행된다.