[UE5] Get / Set
이전 글에서 데이터의 공간을 만들고 할당하는 것까지 해보았다. 하지만 실제로 의미가 있으려면 뭔가를 넣거나 꺼내 써야 한다.
그래서 Get과 Set을 배워보도록 하자.
[Set] 변수에 어떤 값을 할당하는 것.
[Get] 변수에 할당한 값을 읽어내는 것.
int로 영역을 먼저 할당을 받았다. 우클릭을 눌러서 Set Hp를 검색해서 노드를 추가하고 Get HP를 눌러 노드를 추가해 주었다.
이 두 개가 가장 핵심적인 역할을 할 것이다.
아까 HP라는 변수를 만들었는데
왜 두 개를 더 만들어요?
HP라는 일종의 박스를 만든 건 맞지만 새로운 변수로 만든 게 아니라 하나의 기능을 만들어 준 것이다.
이 개념은 함수의 개념과 같다고 보면 된다. 쉽게 기계라고 생각하면 된다.
마우스를 가져다가 대면 함수의 기능을 알 수 있다. Set은 위에서 설명한 것과 같이 HP의 값을 세팅한다라고 쓰여있다.
그렇다면 구동은 어떻게 시킬까? 배치만 해두면 알아서 구동이 되려나?.. 아니다! 반드시 어떤 특정한 이벤트를 통해서만 구동이 가능하다.
그래서 구동을 시키려면 이렇게 연결을 해주면된다. 왼쪽이 입력을 받는 것이고 오른쪽이 뱉어내는 곳이라고 보면 된다.
Set 노드를 보면 양쪽에 구멍이 있는것을 확인할 수 있다. 왼쪽은 함수에서의 입력 값이고, 오른쪽은 출력값을 실제로 결과물로 뱉어준다 라는 개념이다.
그래서 결국에 Set 이라는 노드는 무엇을 하는 것이냐!
HP 변수에 50 입력값을 넣어주는 함수라고 보면 된다.
자 이제 값을 읽어와 보자! Get의 경우 실행하는 것을 연결하는 게 없다. HP를 읽어오는 것을 읽어온뒤에 사용해야지만 의미가 있는것이지 단순히 읽어오는것 만으로는 아무런 의미가 없다. 그렇기 때문에 Get 자체로는 독립적으로 실행되는 것이 아니라 다른 애한테 뭔가 기생해서 같이 실행되는 그런 개념이다.
그래서 HP값을 꺼내서 출력하고 싶다면 Print Text 노드에 연결해 주도록 하자.
근데 연결해 주자마자 갑자기 To Text라는 노드가 자동적으로 생성이 되었다. 이것은 뭐지?..
하고 알아보니 캐스팅 형변환이었던 것.
C++에서의 캐스팅(형 변환)은 다른 언어와 마찬가지로 하나의 자료형을 다른 자료형으로 변환하는 것을 의미한다.
그래서 실행 시 이렇게 50이라고 출력되는 것을 볼 수 있다.
그래서 이번에 또 알 수 있었던 사실은 Print Text 노드(함수) 또한 다양한 입력값을 받아 화면에다가 입력한 무언가를 보여주는 그런 기능을 하는 함수이다. 그래서 뭔가 리턴하는 그런 기능은 없기 때문에 오른쪽이 텅 비어있다는 것을 볼 수 있다.
앗? 근데 Set에 오른쪽에 구멍이 하나 더 있었는데요? 리턴하는 기능이 있는 게 아닌가????
그렇다. Set은 리턴해줄 수 있는 기능도 있다.
Set / Get 하는 상황이 너무 빈번하게 일어나니까 아예 둘이 합쳐버리자!라고 해서 Set을 바로 연결해 주면 위에서 만든 것과 동일하게 작동하는 것을 알 수 있다.