본문 바로가기

Unity3D/Start Script

Unity 3D Start Script

유니티 3D에서 게임을 만들기 위해 사용하는 스크립트를 테스트하기 위한 프로젝트를 만들어 보자.


앞서 우리는 기본적인 환경을 구성하고 First Person Controller 를 이용하여 우리가 구성한 환경을 두루 이동하며 원하는 곳에 가서 원하는 것을 볼 수 있게 되었다. 

이제 지금까지 익힌 내용에 스크립트가 추가되는 형태의 새로운 프로젝트를 작성하려고 한다.


유니티에서 스크립트는 게임 오브젝트에 포함되는 하나의 Asset (Component )으로 취급되며 해당 오브젝트나 유니티 시스템 그리고 이용자의 이벤트에 반응하는 형식으로 실행된다. 그러므로 개발자는 이미 유니티에서 정의된 이벤트 핸들러 함수를 재정의하는 방식으로 코드를 작성한다.

유니티는 3가지 형식(Javascript, C#, BooScript )의 스크립트를 지원하는데, 여기서는 Javascript 형식으로 코드를 작성하려고 한다




위와 같이 Project 뷰에서 Assets 폴더 위에 마우스 우측을 눌러서 진행해도 되고 Assets 메뉴를 눌러도 동일한 절차를 진행할 수 있다




위의 절차를 수행하면 MonoDevelop 라는 내장 에디터가 실행되고 다음과 같은 코드 템플릿이 나타난다.

#pragma strict


function Start () {


}


function Update () {


}


위의 2개 함수는 아래의 사이트 주소에서 검색하면 그 근거를 찾을 수 있다.

http://docs.unity3d.com/Documentation/ScriptReference/index.html


유니티에서는 개발자가 작성하는 Javascript 코드는 MonoBehaviour 라는 클래스를 자동으로 상속하도록 설정되어 있는데 위의 함수 2개는 MonoBehaviour 클래스의 멤버함수이고 개발자는 필요에 따라서 위의 함수를 오버라이드하면 된다는 것이다.


- Start() : 스크립트를 포함한 오브젝트가 초기화될 때 자동으로 호출됨

- Update(): 매 프레임마다 호출됨


2개 함수에 대한 설명을 찾기 위해서는 검색창에 MonoBehaviour 를 입력하고 검색하면 된다.


제시된 함수를 테스트하기 위해서 에디터에서 아래와 같은 내용으로 오바라이드 하고 저장한다

#pragma strict


function Start () {

Debug.Log('Start() 호출됨');

}


function Update () {

Debug.Log('Update() 호출됨');

}


작성된 스크립트는는 게임 오브젝트에 포함되어야 작동하는 콤포넌트에 불과하기 때문에 어떤 게임 오브젝트에 포함되지 않으면 의미가 없다. 여기서는 디폴트로 존재하는 Main Camera에 코드를 포함하도록 테스트하려고 한다. Main Camera 도 게임 오브젝트이므로 스크립트와 같은 콤포넌트를 포함할 수 있기  때문이다.


Project 뷰에서 스크립트의 이름도 아래 그림과 같이 ScriptTest 로 변경하고 스크립트를 드래그하여 Hierarchy 뷰의 Main Camera에 포함시키고 Main Camera를 클릭하면 Inspector 뷰의 하단에 포함된 스크립트 정보가 나타난다.




매우 짧은 시간만 실행하면 되므로 실행버튼을 누르고 실행이 되는 즉시 다시 버튼을 눌러 실행을 종료하고 유니티 상태바에 출력된 디버그 메시지를 클릭하면 상세한 콘솔 메시지 창이 나타난다. 이 때 Start() 함수는 1회만 실행된 것으로 확인되었고 Update()함수는 수십번 호출된 것으로 나타났다. 콘솔창 우측에는 각 함수가 호출된 횟수 까지 숫자로 표시되어 있다.



위와 같은 테스트를 통해서 알 수 있는 것은 유니티에서 스크립트는 게임 오브젝트에 포함될 하나의 콤포넌트라는 것이다.