유니티 게임에서 다수개의 레벨(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 이 실행된다.