유니티 3D에서 자바스크립트를 사용하여 처리할 수 있는 데이터의 종류와 함수 작성법을 알아본다.
유니티 스크립트에서의 데이터 타입
자바스크립트의 자료형은 명시적으로 선언할 필요는 없지만 명시적으로 선언할 경우에는 좀 더 안정성이 있는 프로그램을 작성할 수 있다.
또한 유니티 스크립트에서는 변수를 선언할 때는 반드시 var 키워드를 사용해야 한다
- 정수형
- 실수형
- 논리형
- 문자열
- 그 외 참조형
Project 뷰의 Assets 폴더 안에 아래와 같은 스크립트를 작성하고 드래그하여 Hierarchy 뷰에 있는 Main Camera 안에 포함시킨 다음 Main Camera를 클릭하면 Inspector 뷰의 하단에 스크립트에서 선언한 변수들이 나타나고 값을 다시 할당할 수도 있다.
#pragma strict
// 자료형이 없이 변수를 선언하는 예
var num = 7; //값이 할당될 때 자료형이 결정됨
// 자료형을 명시적으로 사용하는 예
var d:int = 10; //정수형
var r:float = 10.0; //실수형
var b:boolean = true; //논리형
var s:String = 'Hello'; //문자열
var st:String = "World"; //문자열
var gobj:GameObject; //그 외 참조형
function Start () {
Debug.Log('d='+d);
Debug.Log('r='+r);
Debug.Log('b='+b);
Debug.Log('s='+s);
Debug.Log('st='+st);
Debug.Log('gobj='+gobj);
}
/*
function Update () {
Debug.Log('Update() 호출됨');
}
*/
스크립트가 포함된 Main Camera를 클릭하면 Inspector 뷰의 하단에서도 변수들이 나타나고 값을 다시 할당할 수도 있다.
Inspector 뷰에서 값을 다시 할당할 경우에는 그 값이 스크립트의 내용을 갱신하지는 않으며 실행시간에 적용될 뿐이다.
위의 Inspector 뷰에서 변수 D의 값을 1000 으로 변경하여 실행 테스트를 해보면 다음과 같이 변경된 값이 콘솔에 출력되는 것을 확인할 수 있다
Inspector 뷰에서 변경한 변수의 값을 원래의 스크립트에서 선언한 값으로 다시 복원하려면 스크립트 콤포넌트 상단에 있는 톱니바퀴 모양의 설정 아이콘(Cog Icon)을 클릭하여 Reset 항목을 클릭하면 된다
위의 테스트로 알 수 있는 것은 스크립트에서 변수를 선언할 때 함수 밖에 선언하고 그 스크립트가 포함된 게임 오브젝트를 선택하면 Inspector 뷰에서 그 오브젝트에 포함된 스크립트의 변수들이 보이고 값을 다시 할당할 수도 있다는 것이다. 그러므로 함수 밖에 선언한 변수는 public 키워드를 묵시적으로 포함하고 있다는 것으로 설명할 수 있다.
변수를 선언할 때는 public, private 키워드를 명시적으로 사용하여 변수를 선언할 수도 있다.
public : Inspector 뷰에서 변수를 볼 수 있고 값을 다시 할당할 수 있다
private: Inspector 뷰에서 볼 수 없고, 선언된 스크립트 파일에서 만 참조할 수 있다
주의할 점
private 변수는 Inspector 뷰에서 보이지 않을 뿐만 아니라 다른 스크립트에서도 참조할 수 없는 상태가 되므로 Inspector 뷰에서 보이지 않게 할 목적으로 private 키워드를 사용한다면 private 키워드 대신에 internal 키워드를 사용하는 것이 권장된다
internal 키워드를 사용하여 변수를 선언하면 Inspector 뷰에서 만 보이지 않고 다른 스크립트에서는 해당 변수의 참조가 가능하다
internal 키워드를 사용하여 변수를 선언하는 예
#pragma strict
// 자료형이 없이 변수를 선언하는 예
var num = 7; //값이 할당될 때 자료형이 결정됨
// public 변수 선언 예
public var d:int = 10; //정수형
public var r:float = 10.0; //실수형
public var b:boolean = true; //논리형
// internal 변수 선언 예
internal var s:String = 'Hello'; //문자열
internal var st:String = "World"; //문자열
var gobj:GameObject; //참조형
function Start () {
Debug.Log('num='+num);
Debug.Log('d='+d);
Debug.Log('r='+r);
Debug.Log('b='+b);
Debug.Log('s='+s);
Debug.Log('st='+st);
Debug.Log('gobj='+gobj);
}
/*
function Update () {
Debug.Log('Update() 호출됨');
}
*/
스크립트에서 선언한 참조형(객체형) 변수를 Inspector 뷰에서 할당하는 예
위의 그림 중에 Inspector 뷰의 하단에 있는 변수들 중에는 Gobj 변수가 스크립트에서 할당되지 않았기 때문에 None 으로 설정되어 있는 것을 확인할 수 있다
Gobj 변수의 자료형은 GameObject 형이므로 Scene 뷰에 있고 Hierarchy 뷰에 그 이름이 있는 GameObject 중에 하나를 드래그하여 할당하는 방법이 가능하다. Scene 뷰에 Cube 하나를 올려놓고 Hierarchy 뷰에서 그 이름을 드래그하여 테스트하고자 한다.
위의 절차를 마치고 다시 실행 테스트해보면 앞의 출력 결과와 다른 출력 내용을 볼 수 있다
다음 장에서는 유니티 스크립트에서 배열을 선언하고 사용하는 방법에 대해서 알아본다.