Game Develop

유효성검사를 철저하게 하자 본문

UnrealEngine5/이것저것

유효성검사를 철저하게 하자

MaxLevel 2022. 12. 14. 20:13

 

본인이 직접 작성한 코드에 대한 포인터는 UPROPERTY 매크로를 붙여서 관리하게 하자.

  -> 잘못하면 런타임때 죽어버릴 수 있다.

 

월드상에 배치되는 액터라면 IsValid()함수로 유효성 체크를 한다.

언리얼오브젝트는 Destroy를 호출한다고 바로 삭제되는게 아니라, 일단 Pending Kill 상태로 마크만 표시한 후, 다음 가비지컬렉터가 작동할 때 되서야 실제로 삭제된다. 

네이티브 c++ 개발할 때처럼 nullptr로만 체크를 하는것을 권장하지 않는다.

 

UPROPERTY가 런타임때 죽는다면, 가비지컬렉터가 UObject에서 상속되는 클래스를 지워서 그렇다.

스마트포인터로 관리하거나, AddReference로 GC에 참조카운트를 올려서 관리받게 유도한다.

 

Actor클래스의 경우 SpawnActor로 생성되었다면 따로 UPROPERTY를 안해도 된다.

왜냐하면 SpawnActor안에 알아서 참조카운트를 올려준다.

 

같은 종류 액터 여러개를 사용할거면 TArray를 UPROPERTY 붙여서 사용하는 방법도 있다.