Unreal

[Unreal] 4월 3일 수업정리

k-codestudy 2025. 4. 3. 14:10

램프와 버튼을 만들어 버튼을 이용하여 램프 on / off

 

직접 통신 방식 

BP_ThirdPerson에 F 키를 누르면 호출할수 있게 설정 ( 이벤트 디스패치 )
램프에 기능을 가지고 있어야 하기에 커스텀 이벤트 하나를 생성한 다음 Point Light의 Toggle Visbility만 설정
Begin Overlap, End Overlap을 사용하여 캐스팅한 후 바인드, 언바인드 설정 / 변수 -> m-useLamp라는 변수를 만든 후 변수 타입은 bp-lamp의 오브젝트 레퍼런스로 설정 / 이벤트에 bp-lamp에서 만든 커스텀 이벤트를 가져와서 사용하면 됨
우측 m-useLamp에 옆에 보면 스포이드를 클릭하여 사용하고싶은 램프 (객체)를 설정하여 알려줘야 한다.

핵심 

  • 서로 간의 관계를 알려줘야 한다.
  • 마지막 사진을 보게 되면 bp-lamp의 포인터를 얻어오는 과정 (배치된 것의 포인터를 따오는 것은 굉장히 쉽다)

문제점 

  • 해당 버튼은 설정이 된 램프밖에 사용할 수밖에 없음 

다른 방법으로 여러 개의 기능을 가지고 있게 하고 싶으면 이벤트 디스패처를 이용하여 만들면 된다.

위의 과정은 직접통신을 이용한 것으로 버튼이 물건을 알게 한 것이지만 이벤트 디스패처를 이용하여 물건이 버튼을 알도록 만들어 보겠다.

 

이벤트 디스패처 방식

bp-Btn에 이벤트 디스패처를 호출
함수 오버라이더블에서 BeginPlay를 불러오고 변수 b-useLamp를 만들어 변수 타입은 bp-Btn의 오브젝트 래퍼런스로 설정
BeginPlay에 b-useLamp 호출 후 ed-use Btn을 바인드를 하고 이벤트는 커스텀으로 만들어 놓었단 e-useLamp 호출

 

  • 연결 시점은 시작 시점과 동시에 해주면 되고, 이렇게 하게 되면 버튼 하나로 2개를 동시에 작동시키는 것도 가능해지는 경우가 발생한다.

 

위의 방식과 똑같이 폭탄을 만들어 보았다. 

  • spawn emitter at location ( 케스 케이드 부르는 함수 )
  • spawn system at location ( 나이아가라 부르는 함수

알아야 하는 게 하나 더 있는데 저기 destory를 하게 되면 널 포인터를 참조하게 되는데 그럼 버튼을 누르게 되면 오류 널 포인터를 참조하였기에 오류가 나야 하지만 나지 않는다. 언리얼에서 자동으로 지워주기 때문이다.

'Unreal' 카테고리의 다른 글

[Unreal] 4월 7일 수업정리  (0) 2025.04.07
[Unreal] 4월 4일 수업정리  (0) 2025.04.04
[Unreal] 4월 2일 수업정리  (0) 2025.04.02
[Unreal] 4월 1일 수업정리  (0) 2025.04.01
[Unreal] 3월 31일 수업정리  (0) 2025.03.31