언리얼엔진4로 작업을 하다보면, Level 에 있는 Actor 간 통신을 하기에 중개자가 있으면 좋을 것 같단 생각을 한다. 이를 위해 다양한 방법을 사용하는데 우리는 Level을 사용할 것이다. ( 우리가 DirectX나 또는 소프트웨어 렌더러를 사용한다면 Scene 또는 Manager 정도로 생각하면 될 것 같다. ) Level을 C++로 작성하여 Custom 함수도 추가하고, Actor 간의 통신을 유연하게 할 예정이다. 작성할 내용은, 각 Scene에 있는 몬스터들을 추가한 후 Level에게 알려주고 몬스터가 다 죽는 이벤트가 발생할 시에 Level 의 Delegate로 모두에게 BroadCasting 하는 방법으로 작성할 예정이다. |
기본적으로 Level Blueprint는 ALevelScriptActor, 즉 Actor 형식이다.
이를 상속받아 새로운 Level Actor를 생성한다.
자신의 LevelScriptActor에서 추가한 함수가, Level Blueprint에서도 보일 수 있게 수정할 수 있다.
다음은 Actor들의 Reference를 받아 Destroy 시키는 DestroyActors 함수이다.
자신의 LevelScriptActor에서 작성한 함수가 Level Blueprint에서 보이려면 UFUNCTION과 Specifier 작성 필수이다.
눈에 띄는건 DestroyActors의 UPARAM(ref) 이라는 매크로인데, 이는 함수가 받는 인자가 Blueprint 상에서는 왼쪽
에서 와야 한다는 뜻이다.
( -> 즉 UPARAM(ref)를 사용하지 않으면, Actors 라는 인자는 Blueprint 노드의 오른쪽에 위치하게 된다. )
만약 UPARAM(ref) 을 사용하지 않으면, 위와같이 배치되게 된다.
왜냐면, 블루프린트는 인자를 Out 형식으로 쓸 수도 있기 때문이다.
(즉 한 함수를 통하여 2 개 이상의 값이 반환되어야 한다면, Return 타입만으로는 관리할 수 없다,
이를 위해 인자로도 정보를 받아낼 수 있게 하는데, Blueprint는 함수의 인자가 실제로 정보를 받는 인자인지, 정보를 밖으로 배출하는 인자인지 알 수 없기 때문에 UPARAM(ref) 매크로로 관리해준다.)
블루프린트에서 왼쪽은 받는 인자이고, 오른쪽은 배출하는 인자 이다. ( In & Out )
'UnrealEngine > 기능' 카테고리의 다른 글
[Unreal Engine 5] Animation Montage (0) | 2023.09.21 |
---|---|
[Unreal Engine 5] 캐릭터 애니메이션 (1) | 2023.09.19 |
[Unreal Engine 5] 향상된 입력 (Enhanced Input) (0) | 2023.06.04 |
[Unreal Engine 4] 메모리 관리 (0) | 2021.07.22 |
[Unreal Engine 4] 클래스 생성 (0) | 2021.05.28 |