Post

언리얼 엔진 블루프린트의 'Construction Script' 사용에 관하여

C++에서 OnConstruction 메소드로 구현가능

1
virtual void OnConstruction(const FTransform& Transform) {}

‘Construction Script’의 호출 타이밍

  • 액터가 스폰 될 때
    • 런타임의 경우, 맵에 배치되지 않고 동적으로 스폰되는 액터만 호출한다.
  • 에디터에서 액터가 움직 일 때 (C++의 PostEditMove가 호출 될 때)
    • 이 경우 오브젝트가 움직이는 동안 여러번 호출 된다.
  • 에기터에서 액터의 속성이 변경된 경우 (C++의 PostEditChangeProperty가 호출 될 때)

남용 할 경우 발생하는 문제

1. 너무 잦은 호출로 인한 성능 문제

다양한 타이밍에 호출되며 특히 액터를 움직일 때 여러번 호출 되기 때문에 Construction Script 내부 로직이 무겁거나 액터의 개수가 많은 경우에는 에디터가 멈추는 현상이 발생 할 수 있다.

2. 순환 호출 문제

A액터에 ChildActorComponent가 있어 관계 된 다른 B액터가 있는 경우, A액터가 Construction Script에서 B액터의 프로퍼티를 변경하면 A액터와 B액터 사이에 서로의 Construction Script에 의한 순환 호출이 발생하여 에디터가 크래시가 발생 할 수 있다.

사용 시 권장사항

  • 필요하지 않은 경우 사용하지 않기. 자동화 작업을 통해 액터를 변경시켜야 하는 경우에만 사용하기
  • ‘Construction Script’를 최대한 간결하게 유지할 것. 자동화에 필요한 내용만 담아야 하며, 이것을 생성자나 BeginPlay와 같이 사용하면 안된다.
  • ‘Construction Script’에서 다른 액터(자식 액터 포함)의 속성을 변경하지 않기. 이를 어길 경우 ‘Construction Script’가 순환 호출 되어 에디터의 크래시를 유발한다.

참고자료

UE4 – Be careful with the Construction Script

This post is licensed under CC BY 4.0 by the author.