프로그래밍 공부
작성일
2024. 1. 12. 16:48
작성자
WDmil
728x90

BP를 사용해서 CubeObject를 생성하기.

 

BP를 사용해서 Cube를 생성해보자.

좌측의 엑터창을 사용해서 Cube를 생성해도 무방하지만, 일단 우리는 블루프린트를 적용 가능한 엑터를 생성하는것 이 목표이기 때문에, 블루프린트를 이용해서 Cube를 만들 것 이다.

블루프린트 클래스를 생성한다.

만들어야 하는것 은 엑터 임으로, 엑터로 생성한다.

컴포넌트 추가 에서 Cube를 생성한다.

 

생성하게 되면, 지정된 구 대신 Cube가 생성된다.

중앙에 있는 구체는 엑터가 생성되면 해당 위치에 생성된다고 알려주는 것 임으로, 무시해도 무방하다.

어차피 컴포넌트가 추가되면 볼 일이 없다.

 

같은 느낌으로 TextRender또한 생성해서 Cube에 드래그 하여 상속시켜준다.

 

 

위와같이 텍스트를 배치하면 성공.

 

텍스트는 FString타입 임으로, 한글이 나타나지 않는다. 참고하자.

우측 창에서 텍스트 내용과 색을 바꿀 수 있다.

대충 위와같이 나타나면 성공이다.


Player케릭터의 에니메이션 연동작업.

 

전에 만들었던 ABP에서 Mesh데이터를 가져와서, 해당 Mesh데이터를 수정하여 에니메이션을 설정해줄 것 이다.

전에 사용했던 방식은 매 프레임마다 Pown Actor를 다시 찾아서 지정해주는 방식이기 때문에 비효율적이고 비용이 많이 발생한다.

 

그럼으로, 데이터를 한번만 지정하여 여러번 작업하지 않게 해줄 것이다.

 

전에 만들어 두었던 ABP_Player에 이동해보자.

 

우리는 IsValid를 사용해서 데이터가 유효한지 아닌지 확인하는 블루프린트를 사용할 수 있다. 이걸 응용할 것 이다.

 


포인터 변수 생성 & 유효 확인하기.

 

우선 변수 추가를 하여, BP Player의 포인터 변수를 선언해준다.

우리가 Class에서 헤더타입을 잘 정리하면, 다른 Class에서 그 Class와 연관이 없는 Class에 대한 포인터를 선언할 수 있는걸 알 고 있을 것 이다.

 

이런것 처럼 BP Player에 대한 포인터 함수를 선언하여 오브젝트 레퍼런스로 사용할 것 이다.

 

유효성 검사

위와같이 블루프린트를 배치하였다고 가정해보자.

블루프린트에서 Update마다, BPPlayer가 유효한지 아닌지 검사 할 것 이다.

그리고, 유효하지 않다면 NotValid로 유효하다면 IsValid로 이동할 것 이다.

 

이제 블루프린트를 위와같이 배치해보자.

 

블루프린트에서는 형변환을 통해 Try Get Pawn Owner를 하여, 현재 ABP를 소유하고 있는 Pointer에 대해 역참조가 가능하다

 

해당 객체를 참조하여 Get하고, 형변환 하여 BP객체로 변환한 뒤에, BPPlayer에 Set해준다.

 

그리고 String을 출력하는데

 

위 함수를 실행하면 String이 한번만 실행되는 걸 확인할 수 있다.

문자열이 한번만 출력된다.

 

그 이유는, BP에 데이터가 기입되었고, 유효성 검사에서 이 포인터는 유효하다고 판별했기 때문에 커스텀 실행문인 Valid로 이행하기 때문이다.

그리고, Valid를 위와같이 구축하면 된다.

위 함수는 전에 작성했던 현재 플레이어의 속도를 구하는 블루프린트 목록들이다.

728x90