Make Unreal REAL.
article thumbnail
 

How to get collision/trace channel by name in c++?

Uh this should be marked as the answer. Unreal doesn’t expose the editor defined channel names in C++, so you need to define them manually as such:

forums.unrealengine.com

같은 건 사실 없다.. 언리얼 엔진에서는 제공하지 않는 기능이다.

 

대신 프로젝트(주 게임 모듈)의 헤더인 {프로젝트명}.h 파일에 #define 전처리 지시자를 이용해 미리 매크로를 정의해놓고 사용하는 편법이 있다.

  • 하지만 Collision 채널을 추가, 삭제, 이름 변경하는 경우에는 정의한 매크로와 일치하는지 매번 확인해줘야 한다.

 

 

아래와 같이 간편하게 사용할 수 있다.

 

 

언리얼 엔진은 프리셋에 설정된 Object Channel(Type) 정보를 가져오는 기능은 제공한다.

 

이것을 이용한 또 다른 편법은 프리셋 이름을 통해 Collision 채널을 가져오는 것이다.

  • 매번 매크로가 일치하는지 확인해주지 않아도 된다.
  • Collision 채널과 동일한 이름의 아무 프리셋을 만들고 Object Channel만 동일하게 설정해주면 된다.
  • 단, Trace 채널의 정보는 가져올 수 없다.

 

우선 Object 채널과 동일한 이름의 아무 프리셋을 만들어준다.

 

 

새로운 언리얼 오브젝트를 만들고 클래스에 접근해 바로 사용할 수 있도록 정적(static) 함수로 선언한다.

  • 관리의 용이성을 위해 새로운 추가 모듈을 만들고 그 곳에 언리얼 오브젝트를 만들어도 된다.

 

 

구현부에서는 프리셋 이름을 받아 동일한 이름으로 설정된 Collision 채널을 반환한다.

 

 

함수를 사용하기 위해 헤더롤 포함하고 아래와 같이 사용하면 된다.

 

'Unreal Engine > ' 카테고리의 다른 글

런타임이 블루프린트 에셋을 찾지 못할 때  (0) 2023.03.19
Source 폴더 정리 및 세분화  (0) 2023.03.18
액터 스냅  (0) 2023.02.28
Browse 버튼  (0) 2023.02.15
액터 흰 공 없애기  (0) 2023.02.08
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그