I love to play all day~ ( ܸ ⩌⩊⩌ ܸ )
온갖 잡동사니
제가 무언가 보여드립니다.
2. "고도 엔진" 관련 기초 문법
DATE 2024/07/07
TAG
728x90
기초 문법

 

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 (열거형)

더보기
    enum (열거형)은 상수들을 묶어서 편하게 사용할 수 있도록 만든 것이다.
    단, 일반적인 상수와 다르게 숫자만 담을 수 있으며 게임에서 발생하는 상황, 상태를 알아보기 쉽게
    숫자 대신 문자로 표현할 때 유용하게 사용 가능하다.

 

    추가로 열거형 자체에 이름 생성이 가능하며, 이것을 Named Enum라고 한다.

    Named Enum을 만들고 싶다면 Enum과 중괄호 사이에 열거형의 이름을 작성한다.

 

    열거형 사용 시 상수와 같이 이름을 적으면 사용 가능하며

    이름있는 열거형 사용 시 열거형의 이름, 점, 상자 이름을 적을 시 사용 가능하다.

 

정수 값을 지정하지 않을 시 기본 값인 0, 1, 2, … 로 자동 할당

 

결과값

 

■ 열거형 작성

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!" 출력
  1. get_greeting() 함수는 String 값 반환 → "Hello from function!"  문자열 반환
  2. _ready() 함수 내에서 get_greeting() 함수 호출 → message 반환 값 저장
  3. message 변수 = "Hello from function!" 값을 지님
  4. 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("열살도 스무살도 아니다")

 

▷ 결과 값

열살도 스무살도 아니다

 

 

 

나머지 내용 다음에 추가 예정 …

 

 

 

 

 

 

 

 

728x90

'현생과 멀어진 날 > 공부방' 카테고리의 다른 글

1. "고도 엔진" 헬로 월드 출력  (0) 2024.07.07
1. "고도 엔진" 헬로 월드 출력
DATE 2024/07/07
TAG
728x90
들여쓰기

 

들여쓰기 된 영역만 함수의 내용으로 인식한다.

※ 들여쓰기 하지 않을 경우 함수로 인식하지 않음.

 

들여쓰기 하지 않은 경우

 

 


 

헬로월드 출력

 

 

 파일로 생성한 스크립트 파일은 "파일"로만 존재하기에

"노드" 실행 시 "파일"로만 존재하는 스크립트가 실행되지 않음.

 

이에, 생성한 스크립트 파일을 노드로 넣어줘야 함.

→ 노드에 넣을 경우 정상 출력된다.

728x90

'현생과 멀어진 날 > 공부방' 카테고리의 다른 글

2. "고도 엔진" 관련 기초 문법  (0) 2024.07.07
yunicorn