Enemy Spawn
- 종속성
- 싱글톤 패턴
- 하나의 인스턴스를 만들고 그 인스턴스의 지워지지않은 정보를 저장해서 가져다 쓰는 방식

- 현재 여러개의 BP_스폰 액터를 배치하고 있지만 하나로 줄이고 랜덤의 위치에서 스폰되게 할것이다

-
실행을 누르지않아도 월드내에 배치해도 이벤트가 발생한다
-
Construction Script를 이용한 방법을 통해 실행전 에디터로 설정을 만질 수 있는 방법이 있다
-
블루프린트 Actor하나를 만들고 "BP_SpawnPoints"라는 이름으로 만든 뒤 월드에 배치한다

-
팩토리에 배치한 액터를 담을 TArray형태의 배열을 선언
CEnemyGOD
public:
UPROPERTY(EditInstanceOnly, BlueprintReadWrite)
TArray<AActor*> spawnPoints;
- Construction Script 통해 해당 오브젝트를 찾아둔다

UFUNCION
언리얼 엔진에서 C++ 클래스의 함수에 메타데이터를 추가할 때 사용하는 매크로
- BlueprintCallable : 블루프린트에서 함수를 호출할 수 있게 합니다.
- BlueprintImplementableEvent : C++에서 함수의 구현이 필요하지 않고, 블루프린트에서 해당 함수를 오버라이드하여 구현할 수 있습니다.
- BlueprintNativeEvent : C++에서 기본 구현을 제공하면서 블루프린트에서 오버라이드할 수 있게 합니다.
- Exec : 게임 내 콘솔에서 이 함수를 명령어로 실행할 수 있게 합니다.
- Server, Client, NetMulticast : 네트워크 레플리케이션을 위해 서버, 클라이언트, 멀티캐스트 함수로 설정할 수 있습니다.
- Reliable, Unreliable : 네트워크 호출이 안정적으로 전달되도록 보장할지 여부를 설정합니다.
- WithValidation : 함수에 대해 서버 호출 유효성을 검증하는 코드를 추가합니다.
- Category : 블루프린트 내에서 함수가 속할 카테고리를 지정합니다.
- meta = (DisplayName = "Custom Name") : 블루프린트에서 함수의 이름을 커스텀하게 표시할 수 있습니다.
CEnemyGOD.h
public:
UFUNCTION(BlueprintNativeEvent)
void FindSpawnPoins();
CEnemyGOD.cpp
void ACEnemyGOD::FindSpawnPoins_Implementation()
{
GEngine->AddOnScreenDebugMessage(0, 2, FColor::Blue, "Test Native Event");
}
- FindSpawnPoins_Implementation()는 무엇인가 사실 헤더에서FindSpawnPoins() 선언된 순간 UFUNCTION(BlueprintNativeEvent)에서 이미 블루프린트로 만들어놨다 그래서 FindSpawnPoins() cpp 파일을 만들경우 중복으로 만들었다는 오류가 뜬다
- 그래서 BeginPlay() 함수에서 호출만 하고 그 기능은 블루프린트로 만들어 준다
CEnemyGOD.cpp
void ACEnemyGOD::BeginPlay()
{
Super::BeginPlay();
FindSpawnPoins();
... 생략
}
