Skip to content

Event System

Yunseong Jeong edited this page Nov 14, 2024 · 6 revisions

Event Object

EventObject 클래스는 Unity에서 InteractableObject를 상속받아 특정 조건(충돌, 상호작용, 객체 생성)에 따라 이벤트 시퀀스를 트리거하는 기능을 제공합니다.

클래스 개요

필드

  • isLoop (bool):

    • 이벤트 시퀀스를 무한 반복할지, 한 번만 실행할지를 결정하는 변수입니다.
  • trigger (EventTrigger):

    • 이벤트 시퀀스를 언제 트리거할지 지정하는 열거형 변수입니다. 사용할 수 있는 옵션은 다음과 같습니다:
    • OnCollisionEnter: 다른 콜라이더가 이 객체의 콜라이더에 들어왔을 때 트리거합니다.
    • OnInteraction: 사용자와의 상호작용 시 트리거합니다.
    • OnAwake: 객체가 장면에 처음 생성될 때 트리거합니다.
  • triggerLimitCounter (int):

    • 이벤트 시퀀스가 트리거될 수 있는 횟수를 제한합니다. -1 값은 제한이 없음을 의미합니다.
  • eventSequence (List):

    • 트리거 조건이 충족되었을 때 실행될 Event 객체들의 리스트입니다.

메서드

  • EventLoop()

    • eventSequence 리스트를 순회하며 각 Event 객체를 실행하는 코루틴입니다.
    • isLoop가 true인 경우 이 루프가 무한히 반복됩니다.
  • TriggerEvent()

    • 이벤트 시퀀스를 실행하도록 EventLoop 코루틴을 시작합니다.
    • 이미 이벤트 루프가 실행 중인 경우, 현재 루프를 중지한 후 새로 시작합니다.
  • KillEvent()

    • 현재 실행 중인 이벤트 루프 코루틴이 있다면 이를 중지합니다.

Event

이 문서는 Unity에서 사용할 수 있는 Event 추상 클래스와 다양한 Event 서브클래스들에 대한 설명을 제공합니다. 각 Event 클래스는 특정 기능을 수행하며, 이벤트 시퀀스를 통해 다양한 효과와 상호작용을 쉽게 구현할 수 있도록 돕습니다.

Event 클래스 계층 구조

  • Event는 추상 클래스이며, execute() 메서드를 통해 각 서브클래스에서 고유한 동작을 정의합니다. 다양한 이벤트를 정의하여 게임 내에서 상호작용과 효과를 처리할 수 있습니다.

Event

  • 설명: 모든 이벤트 클래스의 기본이 되는 추상 클래스입니다.
  • 메서드:
    • execute(): 각 서브클래스에서 고유한 기능을 수행하도록 오버라이드됩니다.

HurtEffectEvent

  • 설명: 특정 양만큼 캐릭터에게 피해 효과를 주는 이벤트입니다.
  • 필드:
    • amount (float): 피해량.
  • 메서드:
    • execute(): EffectManager의 HurtEffect 메서드를 호출하여 피해 효과를 실행합니다.

ShakeCameraEvent

  • 설명: 카메라 흔들림 효과를 제공하는 이벤트입니다.
  • 필드:
    • time (float): 카메라가 흔들릴 시간.
  • 메서드:
    • execute(): EffectManager의 ShakeCamera 메서드를 호출하여 흔들림 효과를 실행합니다.

WarpPortalEvent

  • 설명: 지정된 포탈로 이동하는 이벤트입니다.
  • 필드:
    • portalID (PortalID): 이동할 포탈의 ID.
  • 메서드:
    • execute(): PortalManager의 TransitScene 메서드를 호출하여 포탈 이동을 수행합니다.

DelayEvent

  • 설명: 지정된 시간만큼 지연을 발생시키는 이벤트입니다.
  • 필드:
    • delayTime (float): 지연 시간.
  • 메서드:
    • execute(): WaitForSeconds를 사용해 delayTime만큼 대기합니다.

FadeInEvent

  • 설명: 화면 페이드 인 효과를 주는 이벤트입니다.
  • 메서드:
    • execute(): EffectManager의 FadeIn 메서드를 호출하여 페이드 인 효과를 실행합니다.

FadeOutEvent

  • 설명: 화면 페이드 아웃 효과를 주는 이벤트입니다.
  • 메서드:
    • execute(): EffectManager의 FadeOut 메서드를 호출하여 페이드 아웃 효과를 실행합니다.

SoundEvent

  • 설명: 사운드를 재생하거나 중지하는 이벤트입니다.
  • 필드:
    • soundObject (SoundObject): 재생하거나 중지할 사운드 객체.
    • playOrStop (PlayOrStop): 사운드를 재생할지, 멈출지 결정합니다. (PLAY 또는 STOP)
    • soundName (string): 특정 사운드 이름을 설정할 수 있습니다.
  • 메서드:
    • execute(): playOrStop에 따라 soundObject를 재생하거나 중지합니다.

BGMEvent

  • 설명: 배경음악(BGM)을 재생하는 이벤트입니다.
  • 필드:
    • bgmName (string): 재생할 BGM 이름.
  • 메서드:
    • execute(): SoundManager에서 BGM 객체를 가져와 BGM을 재생합니다.

StopEvent

  • 설명: 특정 EventObject의 이벤트 시퀀스를 중지시키는 이벤트입니다.
  • 필드:
    • targetObject (EventObject): 이벤트를 중지할 대상 객체.
  • 메서드:
    • execute(): targetObject의 KillEvent 메서드를 호출하여 이벤트를 중지합니다.

NestedEventEvent

  • 설명: 다른 여러 Event 객체들을 순차적으로 실행하는 이벤트입니다.
  • 필드:
    • events (List): 실행할 이벤트 리스트.
  • 메서드:
    • execute(): events 리스트 내의 각 이벤트를 순차적으로 실행합니다.

ConditionalEvent

  • 설명: 특정 조건을 확인하고, 조건에 따라 서로 다른 이벤트를 실행하는 이벤트입니다.
  • 필드:
    • condition (Condition): 확인할 조건.
    • eventInTrue (Event): 조건이 참일 경우 실행할 이벤트.
    • eventInFalse (Event): 조건이 거짓일 경우 실행할 이벤트.
  • 메서드:
    • execute(): condition을 확인하여 참일 경우 eventInTrue, 거짓일 경우 eventInFalse를 실행합니다.

ConditionalLoopEvent

  • 설명: 조건이 참인 동안 반복 실행하는 이벤트입니다.
  • 필드:
    • condition (Condition): 확인할 조건.
    • loopBodyevent (Event): 조건이 참일 동안 반복적으로 실행할 이벤트.
  • 메서드:
    • execute(): condition이 참일 동안 loopBodyevent를 반복하여 실행합니다.

Condition

  • Condition 클래스는 게임 내에서 특정 조건을 확인하는 역할을 하며, ConditionalEvent와 같은 이벤트 클래스에서 조건에 따라 행동을 결정할 수 있도록 도와줍니다. 이 문서는 Condition 추상 클래스와 여러 서브클래스들의 역할과 사용법을 설명합니다.

Condition

  • Condition은 추상 클래스이며, Check() 메서드를 통해 조건의 참/거짓 여부를 반환합니다. 다양한 서브클래스를 통해 복잡한 논리 조건을 구현할 수 있습니다.

Condition

  • 설명: 모든 조건 클래스의 기본이 되는 추상 클래스입니다.
  • 메서드:
    • Check(): 각 서브클래스에서 구현하며, 조건이 참인지 거짓인지 확인하는 논리를 반환합니다.

BoolCondition

  • 설명: 단순히 bool 값 하나로 조건의 참/거짓을 설정하는 조건 클래스입니다.
  • 필드:
    • condition (bool): 조건의 참/거짓 값을 나타내는 논리값.
  • 메서드:
    • Check(): condition의 값을 반환합니다.

NotCondition

  • 설명: 다른 Condition 객체의 결과를 반대로 바꾸는 조건 클래스입니다.
  • 필드:
    • condition (Condition): 반전시킬 대상 조건.
  • 메서드:
    • Check(): condition의 결과를 반전하여 반환합니다. condition.Check()가 참일 경우 거짓을, 거짓일 경우 참을 반환합니다.