inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!

규칙의 필요성

섹션2 규칙의 필요성 부분에서 Godot 4 Function Chaining 이란?

해결된 질문

188

김광호

작성한 질문수 7

0

get_tree().get_root() 이렇게 코드 작성하는데,

get_tree().root 와 결과는 같은지요?? 같다면 어떤차이가 있는지??

유니티 엔진에서도 닷 (.) 를 이용한 " 객체. 메서드 " 형식은 사용되는데..

메서드 ().메서드 ().메서드 ()

godot 4에서는 자주 사용되는거 같아서

검색해서 찾아본결과 Function Chaining 이라고 하는데.. 좀 자세한 설명 부탁드립니다..^^

 

 

객체지향 게임수학 게임-물리 godot-engine gdscript

답변 2

0

코드박치기

get_tree().root과 get_tree().get_root()의 결과는 정확히 동일합니다.

전자는 root 프로퍼티에 직접 접근하는 방식이고, 후자는 getter라는 함수를 호출하는 방식의 차이입니다.

 

유니티 C#에서는 접근 제한자(public, private)라는 개념이 있어서

private 변수에 대해서는 외부에서 변수(root)로의 접근이 전자(.root)로는 불가능하고, 후자(get_root())로만 접근이 가능하다는 점에서 의미있는 차이가 있습니다.

 

그런데 GDscript는 파이썬을 많이 베껴온 언어인데, 파이썬은 모든 변수가 기본적으로 public이어서

전자 후자의 유의미한 차이가 없다고 보시면 됩니다. 저도 차이점이 function chaining정도 밖에는 안떠오르네요.

 

강의에서 var c = get_tree().get_root().get_node("Grandparent/Parent1/Child1") 한줄의 코드는

요컨대 아래 세 줄의 코드와 동일한 코드입니다.

var my_scene_tree = get_tree()

var my_window = my_scene_tree.get_root()

var c = my_window.get_node("Grandparent/Parent1/Child1")

딱봐도 한줄로 쓰는게 잘 읽히고 편해 보입니다..^^

function(메서드) chaining(이어붙이기)은 간결하고 눈에 띄는 코드를 쓸 수 있게끔 쓰는 방법이고

파이썬에서 가능한 건데 이걸 GDscript가 가져온 것입니다.

메서드(함수)는 프로퍼티와 달리 무조건 입력과 출력이 존재(그것이 0개일지라도)한다는 개념을 유념하셔야 합니다.

그래서 출력(return)이 있기 때문에 그 출력을 다른 메서드.() 에 이어붙이고 그 출력을 다른 메서드.()에 이어붙이고 하는 것입니다.

프로퍼티 자체를 가지고는 function chaining을 할 수 없습니다.

 

관련 개념인 setter 함수는 섹션4 '문제 1' 영상에서 간단히 다루었습니다.

감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 김광호님.

Godot 엔진에서 get_tree().get_root()get_tree().root는 기능적으로 동일한 결과를 반환합니다. 이 둘은 모두 현재 씬 트리의 루트 노드를 가져오는 역할을 합니다. get_tree().get_root()get_root()라는 메서드를 호출하여 루트를 가져오는 방식이고, get_tree().root는 속성을 직접 참조하는 방법입니다. 두 방법은 호출되는 방식이 다를 뿐 반환하는 값은 같습니다.

이러한 형태의 코딩 스타일을 Function Chaining이라고 부르며, 여러 개의 메서드를 연속해서 호출하는 방식입니다. Godot 4에서는 이를 사용하여 좀 더 간결하고 읽기 쉬운 코드를 작성할 수 있습니다. 이 패턴은 메서드의 반환값이 고유한 객체이거나, 다음 메서드가 반환된 객체에서 호출될 수 있을 때 주로 사용됩니다.

유니티 엔진에서도 이런 패턴을 사용할 수 있지만, Godot의 GDScript는 파이썬과 비슷한 문법을 사용함으로써 더욱 자연스럽게 체이닝을 지원하고 있습니다. 체이닝은 코드의 깊이와 복잡성을 줄이면서도 기능을 직관적으로 나타낼 수 있는 장점이 있습니다.

아래 링크에서 유사한 질문과 답변을 확인해보실 수 있습니다:
- “고도 엔진의 Function Chaining 이해하기”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

싱글턴패턴

0

7

1

Singleton 관련 질문입니다.

1

31

2

코드 자료

0

26

2

질문있습니다

0

26

1

1번 문제 질문입니다.

0

31

1

음악플레이어 문제 중 코드질문

0

26

1

문제와 풀이4 문제점

0

41

2

문제와 풀이

0

23

1

문제풀이 시간마다 방향성

0

39

2

레이어드 아키텍처에서 도메인 중심 패키지 구조를 적용하거나 변화하는 시점이 있을까요?

1

40

2

LobbyUIController의 백키가 사라졌는데 왜그런건가요?

0

42

2

54.(심화) 보스 구현(2) -state Machine

0

71

2

21. Dictionary 활용 저장&로드

0

90

2

66강. INPUT 관리

0

62

2

31강 질문

0

66

2

69번 강의에서 에러 발생 보고

0

79

2

노드의 내장 시그널 이용 관련 문의

0

79

3

46. 상속씬(3) 수업 질문

0

75

2

3. 미니 슈터게임 > 레이저씬 에서 global_position 과 position 차이??

0

80

2

안드로이드, iOS빌드

0

159

1

우주선 회전

0

104

2

시그널 - 자식에서 부모노드로 접근

0

170

2

웨이브 핸들러 섹션에서 Custom Resource

0

147

2

ObjectHandler 에서

1

153

1