Nexon Supporters Hackathon 08

이태곤·2022년 9월 27일
0
post-thumbnail

Index

  1. Event?

  2. Handler?

  3. 하나의 Entity내에서 호출하는 Event 예시

  4. 외부 Entity에서 호출하는 Event 예시

  5. Extend Component


Event?

  • 로직을 수행하는데 있어 발생한 어떤 사건을 의미한다.

  • 이벤트를 사용하게되면 각각의 독립적인 Entity에대해서 서로 상호작용하기에 용이해진다.

  • 코드 수정이 불가능한 Natvie Scripts와의 상호작용도 가능해진다.

ex) 공격, 피격, 키보드로부터의 입력, 포탈이동 등

  1. 이벤트의 생성 : MyDesk(우클릭) -> Create Scripts -> Create EventType

  1. 이벤트에 관련된 Property 및 Function추가

  • 이벤트의 발생횟수를 누적하는 total 변수

Handler?

  • Event가 발생했을 때 불리는 함수로써 해당 Event 처리를 담당하게 된다.

ex) 공격을 하게되면 특정 이펙트를 발생, 피격을 받게되면 hp를 감소 등

  1. Handler를 만들기 위해 Component 생성 : MyDesk(우클릭) -> Create Scripts -> Create Component
  1. 생성된 Component에 Event를 핸들링해주는 이벤트 핸들러 등록


  • 이벤트 핸들러에서 하는 일 : 이벤트가 발생한 횟수를 콘솔창에 출력해준다.

하나의 Entity내에서 호출하는 Event 예시

  1. 유령 몬스터 Entity를 생성해서 작성한 Component를 추가해주었다.


  1. OnBeginPlay 함수를 통해 게임이 시작될 때 이벤트가 5번 발생되도록 분기문을 작성했다.

  • local myEvent = MyFirstEvent() : 작성한 MyFirstEvent를 myEvent변수에 저장

  • myEvent.toal = myEvent.total + i : 분기문을 1번돌때마다 total값을 1씩 증가시켜준다.

  • self.Entity.SendEvent(myEvent) : 자기 자신 Entity에 있는 핸들러에게 myEvent를 발송(send)

  • wait(1) : 타이밍 이슈문제 발생고려

  1. 콘솔결과창에 누적된 total값이 올바르게 나오는것으로보아 이벤트 핸들러가 정상적으로 동작한것을 확인해볼 수 있다.


외부 Entity에서 호출하는 Event 예시

  1. 이벤트를 수신받을 좀비버섯 Entity를 만들어서 새롭게 작성한 MySecondComponent를 추가해주었다.


  • MySecondComponent 이벤트 핸들러 내용
  1. 유령 Entity가 가지고있는 MyFirstComponent의 OnBeginPlay 함수를 통해 게임이 시작될 때 좀비버섯 Entity에게 이벤트가 5번 발생되도록 분기문을 작성했다.
  • local receiver = _EntityService:GetEntity("Entity ID") : 수신받을 Entity정보를 receiver 변수에 저장

EntityService : Entity에 관한 다양한 method를 제공한다.

GetEntity("Entity ID") : Entity정보를 가져올 수 있는 method, 매개변수로 Entity의 아이디를 갖는다.

cf) Entity ID 확인하는 방법 : Scene Maker -> copy하고자 하는 Entity 우클릭 -> Copy Entity ID

  • local myEvent = MyFirstEvent() : 작성한 MyFirstEvent를 myEvent변수에 저장

  • myEvent.toal = myEvent.total + i : 분기문을 1번돌때마다 total값을 1씩 증가시켜준다.

  • receiver.SendEvent(myEvent) : 수신받을 Entity(receiver)에 있는 핸들러에게 myEvent를 발송(send)

  • wait(1) : 타이밍 이슈문제 발생고려

  1. 콘솔결과창에 좀비버섯 Entity가 수신받은 이벤트 내용이 정상 출력되는 것을 확인해볼 수 있다.


Extend Component

  • 기존에 구현이되어있는 Component 또는 Native Component에서 상속(Override)을 받아 부가적인 내용을 구현하기 위해 사용된다.

  • Extend하고자 하는 Component 우클릭 -> Extend -> 상속된 Component확인가능

  • 화면상에 표시되지는 않지만 상속받은 Component는 Native Component에 있던 Property, Function, Entity Event Handler 내용을 모두 가지고있다.

ex) 왼쪽에있는 Native Component의 내용 -> 오른쪽에있는 Extend된 Component에 존재

0개의 댓글