티스토리 뷰

728x90

고도 스크립트 개요, 예약어와 연산자에 이은 글이다. 

 

내장 타입 

고도 스크립트에서는 기본, 벡터, 엔진, 컨테이너 내장 타입을 지원한다. 대입문에서 데이터를 복사하거나 함수의 인수로  사용할 때의 데이터 전달 방식을 결정한다. 데이터 용량이 큰 배열이나 사전 타입은 값 전달이 아니라 참조 방식으로 수행된다.

 

기본 타입

- null : 데이터를 가질 수 없는 빈 타입. 

- bool : boolean 도 가능. true/false만 가질 수 있다.

- int : integer 도 가능. 64비트 정수.

- float : 64비트 배정도 실수. 

- String : 유니코드 문자열.

위의 그림은 기본 타입을 사용하고 있는 예제이다.

 

벡터 타입

- Vector2 : x, y 항목을 가진 2D 벡터 타입

- Rect2 : position, size, end(position + end 내용) Vector2 항목을 가진 벡터 타입.

- Vector3 : x, y, z 항목을 가진 3D 벡터 타입.

- Transform2D : origin, x, y Vector2 항목을 가진 2행 3열의 매트릭스. 변환, 회전, 크기 조정 등에 사용한다.

- Plane : 정규화 형식으로 표현된 3D 평면 타입. normal Vector3 항목과 d(거리) 항목을 가진다.

- Quat : w, x, y, z 항목을 가진 4 원수. 3D 회전에 사용

- AABB : position, size, end(position + end 내용) Vector3 항목을 가진 벡터 타입. 교차 검사 등에 사용.

- Basis : x, y, z Vector3 항목을 가진 매트릭스. 회전, 크기 조정 등에 사용한다.

- Transform : origin Vector3 항목과 basis Basis 항목을 가진 매트릭스. 변환, 회전, 크기 조정 등에 사용한다.

위의 그림은 고도 스크립트에서 벡터 내장형 타입을 사용하는 예제이다.

 

엔진 타입

- Color : r, g, b, a(투명도, alpha) 항목으로 색상으로 표현. h(색상, Hue), s(채도, Saturation), v(명도, Value) 항목도 있음.

- NodePath : 분석된 노드 경로로 문자열로 간편하게 설정할 수 있다. @"A/B" A노드의 자식 노드 B, @".." 부모 노드.

- RID : 정수형의 리소스 아이디

- Object : 내장형 타입이 아닌 모든 클래스의 기본 타입. 생성은 클래스명.new()로 수행한다.

위의 그림에서는 씬 파일에서 사용된 엔진 내장 타입과 벡터형 내장 타입을 볼 수 있다.

 

컨테이너 타입

- Array : 배열 타입. 고도 스크립트의 배열은 상당히 유연한 특성을 갖는다. 항목들이 동일한 타입이 아니어도 되고 크기를 동적으로 바꿀 수 있다. 첨자는 0부터 시작하고 첨자를 -1로 지정하면 맨 끝 요소를 지정하는 것으로 음수를 통해서 끝에서부터 N번째 요소를 지정할 수 있다. var a = []로 빈 배열을 입력할 수 있다. 항목의 개수가 많아지면 메모리 단편화를 유발할 수 있는데, 이런 경우에는 PoolByteArray, PoolIntArray, PoolRealArray, PoolStringArray, PoolVector2Array, PoolVector3Array, PoolColorArray 등의 특별한 배열을 사용할 수 있다. 단, 배열은 참조 방식으로 공유되지만 Pool... 타입은 값으로 전달됨에 주의한다. 

- Dictionary : 사전 타입. 키를 통해서 간편하게 값을 저장하거나 읽을 수 있는 타입으로 {키:값.....} 형식으로 입력하며, 키 및 값의 데이터 형도 자유롭게 사용할 수 있다. A["key"] = value 형식으로 사용할 수 도 있지만 A.key = value 형식으로 사용할 수도 있다.

위의 그림은 사전 타입의 사용 예제이다.

 

데이터  

변수 : 함수 내 로컬 변수나 클래스 속성으로 사용하며 var 키워드를 사용하여 정의한다. 다양한 형태로 변수를 정의할 수 있다.

  1. 널 타입 변수 : var aaa 와 같이 값 대입도 타입 지정도 없이 이름만 선언한 경우.
  2. 초기화 변수 : var aaa = 3.14 와 같이 값을 초기화하면서 변수를 선언하는 경우. 변수는 값의 데이터 타입을 갖는다.
  3. 타입 지정 변수 : var node_loc: Vector2 처럼 변수 이름에 콜론(:)을 붙이고 타입을 지정하는 경우.
  4. 타입 추론 변수 : var sp_node := Sprite.new() 처럼 타입 지정과 초기화를 수행하는 경우 타입을 생략할 수 있다.

형 변환 : as 키워드와 타입 이름을 기술하여 형 변환할 수 있다. 형 변환이 불가능한 경우 오류를 발생시킨다.

오브젝트의 형 변환은 지정 오브젝트가 대상 타입의 서브 타입 일 때만 가능하고 그렇지 않으면 null 타입이 전달된다.

상수와 열거형 : var 대신 const 키워드를 이용해서 정의하며, 일단 선언하면 변경 불가하다. 단, 배열과 사전 타입은 변수 자체에 대한 대입문은 불가하지만 내부 항목에 대한 변경은 가능하다. 값을 지정해야 하므로 값을 통해서 타입을 추론할 수 있지만, 직접 타입을 지정할 수도 있다. 값 초기화 표현식으로 상수 표현을 사용해야 된다는 것을 제외하면 var 키워드를 사용하는 변수 선언과 유사하다.

 

열거형은 enum { 상수 목록 ..... } 형식으로 여러 개의 정수형 상수를 선언할 수 있는 방법이다. 별도로 값을 지정하지 않으면 0부터 차례대로 정의된다.

 

 

728x90
댓글
글 보관함
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31