Unreal c++ ActorComponent error.
언리얼 멀티플레이를 만드는 중에 골치 아픈 오류가 생겨난다. (자신의 문제가 아니란걸 인지하시길)
해당 사진처럼 ActorComponent를 이용하며 오류가 생기는데 이유는 총 2가지로 보인다.
1. ActorComponent는 개별적인 오브젝트이기 때문에 폰(pawn)이나 아니면 액터에 붙이면 해당 Property들이 스택을 Queue방식을 올리는데 해당 수정된 ActorComponent가 바뀌며 개별 스택으로 인식하여 다른 스택으로 올려 오류가 생긴다.
해당 사진이 그에 대한 생각이다. 해당 창은 해당 BP에 우클릭 -> 에셋 액션 -> 프로퍼티 매트릭스를 통한 대량 편집에서 해당 오류 ActorComponent가 Property 개별 변수로 받아들여 충돌이 일어난다는 것이다.
해당 그림처럼 개별로 움직이다는 생각이다.
2. Replicated같은 프로퍼티 복제때문에 그렇다 지금까지 다른 프로젝트를 만들면서 ActorComponent에 대해 오류가 생긴적은 없었지만 Replicated가 오류의 시초일 수도 있다고 생각할 수도 있다.
https://forums.unrealengine.com/t/engine-crashes-attempt-to-edit-actor-component-in-a-scene/470619/2
Engine Crashes attempt to edit actor component in a scene
Quick observation: Why are you setting a box component inside an actor component? Why not just inherit from a box component directly? UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) class SIDESCROLLINGDEMO_API UCameraBoundingBoxComponen
forums.unrealengine.com
해당 링크처럼 ActorComponent를 다루는데 Multiple의 문제로 Editor안에서 오류가 생긴다고 한다. 확실히 위에 이유와 대입해보면 상당히 맞는 말인거 같다.
지금까지 해결방법.
1. 거의 대부분의 오류는 c++에서 오류가 생긴다. 그래서 작업할때 해당 ActorComponent가 수정과정이 있을 경우 먼저 빌드나 컴파일을 한 후에 다시 돌아가 변수의 명을 바꾸거나 아니면 Constructor(생성자)를 선언하는 과정에서 변수명 = CreateDefaultSubobject<커스텀액터컴포넌트>(TEXT("에디터 변수명")); 에서 "에디터 변수명"을 변경하고 다시 에디터를 껏다 키는거다 (만약 이 방법대로 안할경우 완전히 초기화되기 때문에 아래 방법처럼 하는 방법이 있다).
2. 만약 위에 방법을 실패했을때 BP에 우클릭 -> 에셋 액션 -> 프로퍼티 매트릭스 에서 Path를 설정하는거다(이 방법으로 설정할경우 ActorComponent내에 Property값이 초기화되기 때문에 앵간히 까다롭다).
만약 새로운 방법이 나올경우 다시 이 포스터에 추가할 예정이다.