Unreal/Udemy 강의
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-11
게임개발기원
2024. 3. 19. 17:32
포인터 타입 & GetOwner()
이번에는 컴포넌트의 소유 액터에 대한 포인트를 얻는 방법을 배운다.
우선 포인터에 대한 것과 포인터를 사용하는 이유에 대해서 알아보자.
우리가 사용하는 모든 변수는 데이터를 더장하기 위해서 메모리가 필요하다.
여기서 메모리의 위치가 변수 주소를 의미한다.
아래와 같이 변수의 모든 데이터를 저장하는 것은 오래걸리기 떄문에, 대신 액터 전체를 저장하지 않는 포인터를 사용한다.
AACtor MyActor = ..;
AActor YourActor;
YourActor = MyActor;
포인터는 액터를 찾을 수 있는 액터의 주소만을 저장하기 때문에 훨씬 적은 메모리를 사용한다.
아래와 같이 데이터의 사본을 만드는 대신 오리지널 액터를 가리키게 된다.
AACtor MyActor = ..;
AActor* YourActor;
YourActor = &MyActor;
이를 직접 실습해보면, GetOwner() 라는 함수가 있다.
해당 함수는 씬에서 다른 객체에 액세스할 수 있게 해주는 함수 중 하나이며,
액터 컴포넌트의 함수로 오너 포인터를 가져올 수 있다.
컴포넌트라는 것은 액터가 소유한다.
따라서 컴포넌트를 통해 액터에게 사운드를 부여하거나 액터의 위치를 파악하거나 하는 작업 등을 수행하려면 먼저 포인터를 액터에 전달해야할 필요가 있다.
액터를 수정할 것이기 때문에 사본은 따로 필요가 없다.
해당 함수를 통해 현재 컴포넌트 액터의 주소를 출력해보자.
컴파일 후 플레이를 해보면, 같은 액터에 대해 매 플레이사마다 다른 주소를 가지는 것을 볼 수 있다.
이는 언리얼이 씬에서 플레이 할 때마다 새로운 액터 세트를 생성하기 때문에, 매번 다른 주소를 가지게 된다.