기초 문법
▶ extends (확장)
현재 코드가 아닌 외부에 있는 것을 가져와서 현재 작성 중인 코드를 확장시킬 때 사용하는 키워드
공개된 클래스, 외부 스크립트 파일 혹은 내부안에 있는 클래스를 가져와서 사용 가능
▶ Node (노드)
공개된 클래스를 가져와서 그 안에 들어있는 기능 사용 가능
※ 예시) Node 클래스에 ready() 함수가 이미 정의되어 있음.
※ ready라는 함수 위에 Hello world!가 출력하는 기능을 새롭게 정의함
▶ func_ready()
게임 실행 시 한 번만 실행한다.
▶ # (주석)
읽기 편하게 만든 설명글, 실제 코드가 동작하지 않음.
▶ var (변수)
var (변수)란 데이터를 담을 수 있는 상자
변수는 숫자 뿐만 아닌 문자 및 참과 거짓을 표현하는 분리형 값을 담을 수 있다.
변수를 만들 때 "var" 기호를 사용한 위 "상자의 이름"을 기재
추가적으로 등호 기호를 함께 작성 시 상자를 만든 동시에 데이터도 함께 담긴다.
var 변수_이름 # 변수 작성
var 변수_이름 = 값 # 변수 작성과 동시에 값을 대입
var 변수_이름 : 타입_이름 # 타입을 지정해서 변수 작성
var 변수_이름 : 타입_이름 = 값 # 타입을 지정해서 변수 작성과 동시에 값을 대입
▶ const (상수)
const (상수)는 "var (변수)"와 동일한 기능을 하지만
읽기만 가능하며 데이터를 수정할 수 없다는 차이점이 있다.
상수는 상자를 한 번 만들면 이후 데이터를 담을 수 없으므로
반드시 상자를 만들 때 데이터를 같이 넣어주도록 구성되어 있다.
타입 이름을 지정하지 않고 := 라는 연상자 사용 시
데이터 타입은 GDScript가 자동으로 결정된다.
const 변수_이름 = 값
const 변수_이름 : = 값
const 변수_이름 : 타입_이름 = 값
■ 상수 작성
extends Node
# 상수 작성
const VAR_CONSTANT = 100
func_ready():
VAR_CONSTANT = 200 # 상수를 변경하면 오류 발생
print("값 = ", VAR_CONSTANT)
# 위 스크립트에서 오류 발생
▶ enum (열거형)
단, 일반적인 상수와 다르게 숫자만 담을 수 있으며 게임에서 발생하는 상황, 상태를 알아보기 쉽게
숫자 대신 문자로 표현할 때 유용하게 사용 가능하다.
추가로 열거형 자체에 이름 생성이 가능하며, 이것을 Named Enum라고 한다.
Named Enum을 만들고 싶다면 Enum과 중괄호 사이에 열거형의 이름을 작성한다.
열거형 사용 시 상수와 같이 이름을 적으면 사용 가능하며
이름있는 열거형 사용 시 열거형의 이름, 점, 상자 이름을 적을 시 사용 가능하다.
■ 열거형 작성
extends Node
# 이름있는 열거형 작성
enum Named {IDLE, RUN, JUMP}
# 이름없는 열거형 작성
enum {STAGE_X, STAGE_Y, STAGe_Z}
func _ready():
# 이름있는 열거형
print(Named.IDLE) # 0 표시
print(Named.RUN) # 1 표시
print(Named.JUMP) # 2 표시
# 이름없는 열거형
print(STAGE_X)
print(STAGE_Y)
print(STAGe_Z)
func _process(delta):
pass
■ 결과값
▶ [ ] (배열)
[ ] (배열)은 데이터를 여러 개 담을 수 있는 긴 상자
배열은 대괄호로 표현되며, 여러 개의 값을 넣을 때 , 로 구분해 넣는다.변수, 상수와 같이 이름 있는 배열을 만들어 사용할 수 있다.
■ 배열 작성
■ 결과값
▶ func (함수)
func (함수) = functien
함수는 다양한 기능들을 묶어 편하게 사용할 수 있도록 만든것이다.
■ 함수 작성
extends Node
# 함수 입력 데이터는 콤마를 통해 여러 개 넣을 수 있음
# 단, 반환은 반드시 하나의 데이터만 가능
func _ask_function(my_input):
print(my_input) # 입력받은 데이터 출력
print("GO HOME") # GO HOME 덧붙여서 출력
func _say_function() -> String:
return "NO" # 데이터 입력 뿐만 아닌 return으로 반환 가능
func _ready():
_ask_function("I'm")
_ask_function("Plz")
_ask_function(_say_function())
func _process(delta):
pass
■ 결과 값
I'm
GO HOME
Plz
GO HOME
NO
GO HOME
▷ String
변수에 문자열 저장 / 문자열 = " " 쌓여있는 텍스트 (즉시 출력 불가)
※ 즉시 출력할거면 print 사용
extends Node
func _ready():
var greeting: String = "Hello, World!"
print(greeting) # "Hello, World!" 출력
var greeting: String = "Hello, World!"
요 시점에서는 변수 값에 문자열을 저장했기 때문에 출력되지 않음.
▷ return
함수가 실행을 마치고 값을 돌려줄 때 사용
함수의 반환을 명령할 때 '-> '사용하여 반환될 데이터 값 지정 가능
extends Node
# 함수가 String 타입의 값 반환
func get_greeting() -> String:
return "Hello from function!"
func _ready():
var message: String = get_greeting()
print(message) # "Hello from function!" 출력
- get_greeting() 함수는 String 값 반환 → "Hello from function!" 문자열 반환
- _ready() 함수 내에서 get_greeting() 함수 호출 → message 반환 값 저장
- message 변수 = "Hello from function!" 값을 지님
- print(message)는 message 변수 값 출력 → "Hello from function!" 출력
▶ pass (통과)
함수나 조건문 등 내용이 없는 경우 에러를 발생시킨다.
단, pass 사용 시 애러가 사라지기에 의도적으로 내용을 비워둘 수 있다.
이후 코드는 나중에 작성하고 플레이 테스트 진행 가능하도록 활용할 수 있다.
▶ if, elif, else, match (조건문)
조건문은 특정 조건에 따라 코드 실행, 미실행 여부 결정 시 사용한다.
① if, elif, else
if문은 if 작성 시 오른쪽 문장에 조건식을 적는다.
▷ 정수 값
const momage = 40
const dadage = 50
# if 조건문
func _ready():
if false:
pass
elif dadage < momage:
print("momhigh")
elif momage < dadage:
print("dadhigh")
else :
print("same")
func _process(delta):
pass
"참"일 경우 아래 개행된 내용이 실행되며
"거짓"일 경우 개형되지 않은 부분까지 건너뛴다.
건너뛰는 도중 elif 조건문을 만나면 연달아 조건을 검사한다.
검사 중 한 번이라도 "참"이 나오면 바로 print 내용이 실행되며,
이후에 나오는 elif문이랑 else 조건문은 모두 무시한다.
elif문과 else문은 필수가 아니기에 필요한 경우에만 사용
▷ 참 결과값
dadhigh
② match
match 오른쪽의 데이터와 전부 비교하여
동일 데이터가 있다면 개행된 내용 실행된다.
조건이 많아 if문으로 표현하기 어려울 때 유용하게 쓰인다.
_ (언더바)는 조건을 전부 만족하지 못할 경우에 실행되는 내용을 작성한다.
▷ 정수 값
const momage = 40
const dadage = 50
# match 조건문
match momage:
10:
print("열살")
20:
print("스무살")
_:
print("열살도 스무살도 아니다")
▷ 결과 값
열살도 스무살도 아니다
나머지 내용 다음에 추가 예정 …
'현생과 멀어진 날 > 공부방' 카테고리의 다른 글
1. "고도 엔진" 헬로 월드 출력 (0) | 2024.07.07 |
---|