※ 개인적인 공부를 위해 포스팅 하는 글입니다.
#Actor
ㆍ 블프에서 하는건 아주 간단하게 한다. 그러면 c++에선 어떻게 해야할까?
#C++
ㆍ UStaticMeshComponent 도 하나의 클래스라, 클래스 전방 선언을 해주고 CPP에서 include를 해주자
ㆍ 하나 팁인데 모르겠으면 UStaticMeshComponent 같은 클래스명에 f12로 타고들어가면 대충 뭘 include를 해야될지 힌트를 얻을 수 있다.
# 생성자 사용은 최소한으로
ㆍ 생성자는 CDO의 영역이다. 에디터가 실행될 때 초기화 된다.
ㆍ 코드를 입력하고 BP_R1을 보면 C++에서 편집 이라고 나와있다. C++에 의해 넘어온 애라는 소리다.
ㆍ 현재는 뭐 아무것도 나와있지 않다. 프로퍼티 지정자를 사용하지 않아서 블프에서 볼라 하니 아무것도 없는것!
ㆍ 이제 블프에서도 잘 들어온다.
ㆍ 이러면 잘 들어온다.
#또 위 과정을 블프의 도움없이 다 C++에서 해보자(좀 거지같음)
이런식으로 파일 경로를 직접 불러와야돼서 매우 거지같다.. Box->SetStaticMesh이런걸 찾는건 센스이다. 블프를 보고 이름을 찾아 C++에서 쓰거나, 검색해서 문서를 찾아보거나하자.
ㆍ 경로는 에디터에서 컨트롤c를 하면 바로 복사가 되긴 한다..
#ConstructorHelpers는 무언갈 찾아주는 놈인가보다 (내부 타고 들어가보면 실제 객체로 타고들어감)
※ 아 그리고 뭐 갱신 안될땐 (라이브 코딩 돌려도 안될때), 에디터 껐다키면 대부분 해결된다. ㅋㅋ
#액터 스폰해보기
하지만 저 구조보단 이렇게 하자
ㆍ 근데 지금은 R1Actor는 그냥 사용하고 있지 않고 BP_로 만들어 사용하고 있다.
코드에선 BP로 접근이 불가능 하다고 했다
메타 정보를 잘 긁어와야 한다
맨아래 TSubclassOf를 이용해 저렇게 만들어주고 BPR1Actor를 저기에 넣어줄거다.
ㆍ TSubclass가 뭔지 궁금해 타고 들어가보니 뭐 어려운말이 많지만 클래스를 들고있느놈 정도로 이해했다.
ㆍ TSubclass 는 그 클래스의 기반, 즉 관련된 클래스만 연결해 줄 수 있게 도와주는 연산자
ㆍ 예를들어 서브클래스 키워드가 없다면 어떤 클래스든 ActorClass에 들어갈 수 있지만 Subclass 키워드가 붙어서 AR1Actor로 인해 파생된 클래스만 여기에 들어갈 수 있다.
그래서 이제 생성자에서 위에있는 ConstructorHelpers 를 이용해 BP의 경로를 컨트롤c + v 로 넣어주니 잘 안된다....
맨뒤에 _C를 붙혀야 파일 경로를 불러올 수 있다고 한다. 공식문서에도 나와있다.
ㆍ C++ dynamic_cast가 언리얼에선 Cast로 래핑되어있으니 이걸 사용하면된다.
ㆍ SpawnActor는 Actor타입을 반환하기 때문에 캐스팅해줘서 넣어줘야 한다.
최종 결과로 이제 BP_R1Actor가 스폰된다!
'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글
상대좌표와 엑터의 계층구조 (1) | 2024.10.11 |
---|---|
벡터(수학)와 Actor의 이동 (0) | 2024.10.11 |
머태리얼 (0) | 2024.10.10 |
UObject (0) | 2024.10.10 |
언리얼C++ 여러가지 기본팁 (2) | 2024.10.09 |