
UE + C++)언리얼에서 액터 C++ 클래스를 생성 후 C++로 동작을 구현했다.
필수 + 도전 기능에 액터가 실제로 이동하고 Move()가 1초 간격으로 10회 실행되도록 하는 기능을 추가했다.



C++ 빌드가 Unreal에서 반영되지 않음
-> Visual Studio의 솔루션 구성의 Development Editor로 설정 후 빌드

UE_LOG에서 *FString
UE_LOG(LogTemp, Log, TEXT("String: %s"), *FString());
%s는 TCHAR*를 받기 때문에 *FString()을 사용해야 한다.
랜덤 숫자 출력
min ~ max 사이의 랜덤한 정수를 출력한다.
FMath::RandRange(min, max);
// 헤더
DECLARE_LOG_CATEGORY_EXTERN(LogMyActor, Log, All);
// cpp
DEFINE_LOG_CATEGORY(LogMyActor);
Static Mesh Component 추가
스태틱 메쉬 컴포넌트를 추가하고 루트 컴포넌트로 설정했다.
스태틱 메쉬는 언리얼에서 변경했다.

UPROPERTY(EditAnywhere)
Start(액터 시작위치), Event Probability(이벤트 발생 확률), TotalMoveCount(총 이동 횟수) 는 언리얼 에디터에서 변경할 수 있도록 EditAnywhere로 설정했다.

참고 문서FTimerHandle MemberTimerHandle;void AMyActor::BeginPlay()
{
Super::BeginPlay();
// RepeatingFunction 을 1초에 한 번 실행
GetWorld()->GetTimerManager().SetTimer(
MemberTimerHandle, // 타이머 관리 핸들. 헤더에 정의 필요
this, // 함수가 소속된 객체
&AMyActor::RepeatingFunction, //실행할 함수 포인터
1.0f, // 실행 간격 (초)
true, // 반복 여부 (false = 한 번 실행)
);
}
void AMyActor::RepeatingFunction()
{
// 이 함수를 충분히 호출했으면, 타이머를 해제합니다.
if (--RepeatingCallsRemaining <= 0)
{
GetWorld()->GetTimerManager().ClearTimer(MemberTimerHandle);
// 타이머 해제 이후 MemberTimerHandle 다른 타이머에 재사용 가능
}
// 이후 코드 실행
}