[언리얼엔진] BeginPlay, Tick 이벤트 관련

2025. 5. 9. 17:02·언리얼 엔진/트러블슈팅

1. 개요

C++ 클래스를 상속받은 블루프린트 객체의 이벤트 그래프에서 BeginPlay가 호출되지 않는 문제가 발생했다. 혹시나 싶어서 Tick에도 중단점을 걸어보니 Tick조차 호출되지 않고 있었다. 처음엔 Auto Possess AI의 설정 값이 Placed로 설정되지 않아서 그런건가 싶었지만 설정에는 문제가 없었다.

 


 

2. 원인

// .h
UCLASS()
class ABYSSDIVERUNDERWORLD_API AMonster : public AUnitBase
{
	GENERATED_BODY()


public:
	AMonster();

protected:
	virtual void BeginPlay() override;
}

// .cpp
AMonster::AMonster()
{
}

void AMonster::BeginPlay()
{
}

언뜻 보면 문제가 없어 보이지만, UnitBase 클래스를 상속받은 Monster 클래스의 BeginPlay에서 Super::BeginPlay를 호출하지 않고 있다. 설마 이게 문제겠어 하는 마음에 Super::BeginPlay를 넣고 컴파일을 해본 결과 블루프린트 객체의 BeginPlay와 Tick이 정상 작동했다.

하지만 여기서 추가적으로 드는 의문점이 있었다. 분명 UnitBase의 생성자에서 "PrimaryActorTick.bCanEverTick = false"를 작성했는데 어떻게 블루프린트 객체의 이벤트 그래프에서 Tick이 작동하는걸까 ..

 


 

3. C++ vs 블루프린트

자식과 부모의 Tick 설정은 각각 해줘야 하는 건가하는 마음에 Monster 클래스에서 Tick 함수를 구현해봤지만 로그는 출력되지 않았다. 결론은 블루프린트와 C++의 Tick 이벤트는 따로 논다였다. C++에서 Super::BeginPlay를 넣었는데 블루프린트의 Tick 이벤트가 작동하는 이유를 찾아보니 블루프린트 설정에 Start with Tick Enabled 라는 속성이 있었다.

해당 옵션을 활성화해주면 블루프린트 이벤트 그래프에서 BeginPlay가 호출되면 Tick 이벤트가 호출된다. C++에서 Tick 이벤트를 활성화하려면 PrimaryActorTick.bCanEverTick = true 를 작성해야한다.

 


 

4. 느낀 점

엔진에 대한 이해도가 중요하다는 의미가 무엇인지 몸소 체감하는 시간이었다. BeginPlay는 C++과 블루프린트가 연동되는 느낌으로 동작하지만, Tick은 개별이었다는 것. 이래서 **버그를 해결하는 경험도 중요하다** ! 라고 하는 건가 보다..

'언리얼 엔진 > 트러블슈팅' 카테고리의 다른 글

[언리얼엔진] 범위 공격 - RadialDamage  (1) 2025.05.15
[언리얼엔진] 경로 활용 변수 할당  (0) 2025.05.13
[언리얼엔진] Git Issue, PR Template 사용법  (0) 2025.05.07
[언리얼엔진] 마우스 커서 변경  (0) 2025.04.27
[언리얼엔진] Git LFS 사용법  (0) 2025.04.26
'언리얼 엔진/트러블슈팅' 카테고리의 다른 글
  • [언리얼엔진] 범위 공격 - RadialDamage
  • [언리얼엔진] 경로 활용 변수 할당
  • [언리얼엔진] Git Issue, PR Template 사용법
  • [언리얼엔진] 마우스 커서 변경
Meoyoung's Development Logs
Meoyoung's Development Logs
내가 보려고 만든 블로그
  • Meoyoung's Development Logs
    이게뭐영
    Meoyoung's Development Logs
  • 전체
    오늘
    어제
    • 분류 전체보기 (229)
      • 게임잼 (3)
      • 언리얼 엔진 (53)
        • 꿀 Tip ! (7)
        • 트러블슈팅 (24)
        • 최적화 (0)
        • 캐릭터 (2)
        • VR (1)
        • Lighting (2)
        • 멀티스레드 (2)
        • 문자열 (0)
      • C++ (31)
        • 문법 정리 (8)
        • [서적] Fundamental C++ 프로그래밍 .. (5)
        • [서적] 이것이 C++이다 (11)
        • [서적] Effective C++ (7)
      • C# (1)
        • [서적] 이것이 C#이다 (1)
      • 코딩테스트 (26)
        • 프로그래머스 (6)
        • 알고리듬 (13)
        • 자료구조 (7)
      • 컴퓨터 과학 (27)
        • 운영체제 (11)
        • 데이터베이스 (0)
        • 디자인패턴 (0)
        • 자료구조 (5)
        • 네트워크 (0)
        • 컴퓨터구조 (11)
      • 면접준비 (0)
        • C++ (0)
        • 운영체제 (0)
        • 자료구조 (0)
      • 프로젝트 (25)
        • [팀프로젝트] The Fourth Descenda.. (5)
        • [개인프로젝트] FPS 구현 맛보기 (5)
        • GetOutOf (15)
      • 기타 (54)
        • [강의] 이득우의 언리얼 프로그래밍 Part1 (10)
        • [강의] 이득우의 언리얼 프로그래밍 Part3 (12)
        • [강의] 소울라이크 개발 A-Z (4)
        • [강의] Udemy-2D (5)
        • [서적] 인생 언리얼5 (4)
        • 스파르타코딩클럽 (15)
        • 객체지향프로그래밍 (2)
        • 컴퓨터회로 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    게임잼
    선택정렬
    게임개발
    삽입정렬
    버블정렬
    경북게임잼
    쉘정렬
    셸정렬
    참가후기
    알고리즘
    자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Meoyoung's Development Logs
[언리얼엔진] BeginPlay, Tick 이벤트 관련
상단으로

티스토리툴바