본문 바로가기
[ CODING STUDY ]/》언리얼엔진5 공부

언리얼엔진5 16장 [Reference]

by MRG 2023. 1. 30.
728x90
반응형

▣ 안녕하세요. 

이번장에서는 Reference에 대해 공부해 보도록 하겠습니다.

Reference는 참조라는 뜻을 가지고 있습니다.

그런데 Reference를 참조라는 뜻으로 접근하면 어렵습니다.

쉽게 이야기를 하면 Reference는  메모리 주소를 참고한다라는 느낌으로 생각해 주시면 됩니다.

그럼 노드 코드를 만들며 공부해 보겠습니다.

 

▣ 저번장에서 공부했던 함수를 먼저 생성하겠습니다.

함수의 이름은 Test로 지정하고 Details메뉴에서 Inputs를 하나 추가합니다.

이름은 num1으로 지정해 주시고 데이터형식은 Integer로 지정합니다.

그런 다음에 변수 이름 옆에 화살표 모양이 있습니다. 

화살표를 클릭하면 Pass-by-Reference 체크박스가 있는데 이걸 체크합니다. 

그럼 매개변수의 값을 복사해서 받는게 아니라 Reference  해당 매개변수의 주소를 받아오게 됩니다.

위에 이미지처럼 노드를 완성하고 컴파일 저장 후

 

▣ Level BluePrint창에서 변수를 하나 생성합니다.

number1라는 이름으로 Integer타입, 기본값은 100으로 지정합니다. 

위에 이미지처럼 함수를 호출하고 출력하는 코드를 완성합니다. 

컴파일 저장을 하고 

 

▣ 씬에서 플레이버튼을 클릭하면 number1에 기본값인 100이 아닌

Test함수에서 SET 했던 0에 값으로 바뀌었습니다.

함수에서 input으로 받아온 number1에 Reference 메모리의 주소를 받아와서 그걸 참고 접근하여 

0으로 값을 변경한 겁니다. 

저번장에서는 Reference 가 아닌 변수의 값만 복사해서 왔기 때문에 함수에서 SET을 해도 값이 바뀌지 않았습니다.

이번에는 변수 두 개를 서로 스왑(체인지)하는 코드를 공부해 보겠습니다.

 

▣ Test함수로 돌아가서 Inputs에 num2 변수를 하나 더 추가합니다. 

num1과 동일하게 Pass-by-Reference를 체크합니다.

 

 

▣ 그리고  함수에서 로컬변수를 하나 생성합니다. 

num3에 기본값은 0으로 지정해 주시고 저번장에서 공부했던 Set by ref 함수를 이용하여 

num2 -> num3, num2 -> num1 -> num3 -> num1처럼 서로의 값을 바꿔줍니다. 

num1과 num2의 값을 바꿔야 하기 때문에 위에서처럼 코드를 진행해야 합니다.

만약 num3변수가 없이 num2->num1으로만 SET을 하게 되면

처음 num2->num1하는 과정에서 num1의 값이 덮어 쓰이기 때문입니다.

둘다 num2의 값으로 바뀌게 됩니다.

위에서처럼 코드를 완성했다면 컴파일 저장 후에

 

▣ Level BluePrint로 돌아갑니다.

그리고 number2 변수를 생성해서 200으로 기본값을 지정합니다. 

함수를 호출하여 각각 변수를 연결하고 출력을 해보는 코드를 완성합니다.

완성하고 컴파일 저장 후

 

▣ 씬에서 플레이버튼을 클릭하면 이렇게 number1, number2에 값이 스왑 되는 걸 확인할 수 있습니다.

 

728x90
반응형

댓글