언리얼엔진/언리얼 C++

Actor

season97 2024. 10. 11. 17:02

 

 개인적인 공부를 위해 포스팅 하는 글입니다.


 

#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