UE event&function

Taegang Yun·2023년 7월 20일
0

레퍼런스

  • C++ 프로그래밍
    • 언리얼 오브젝트를 참조하는 안전한 C++ 포인터
  • 블루프린트
    • 물체에 명령을 전달할 수 있는 핀을 가진 노드

블루프린트 종류

  • 레벨 블루프린트
    • 다른 레벨에선 동작하지 않고 해당 레벨에서만 동작하게 된다.
  • 클래스 블루프린트
    • 오브젝트 별로 동작하게 할 수 있으며 레벨 프린트와 다르게 여러 개 생성할 수 있고 다른 레벨에서도 쓸 수 있다.

클래스 블루프린트 부모클래스 종류

  • Actor
  • Character
  • Animation
    • 애니메이션의 상태 머신 + 이벤트 그래프
  • GameInstance
    • 싱글톤과 비슷한 개념
    • 인스턴스가 오로지 하나로만 게임 내내 유지가 된다.
    • 프로젝트 세팅에서 직접 블루프린트를 할당해주어야 사용 가능하다.
  • GameMode
    • 게임에 대한 전반적인 규칙들을 여기서 스크립팅 한다.
      • 레벨마다 게임 모드를 지정해줄 수 있다.
      • 레벨 간의 전환, 스폰 규칙 등등..
    • 개발자가 직접 게임 모드 블루프린트를 생성하지 않으면 언리얼 엔진에 기본적으로 마련이 되어 있는 GameMode 블루프린트가 사용된다.
  • Widget
    • UI를 제작하는 블루프린트
    • 디자이너 모드로 시각적으로 UI 요소를 캔버스에 배치할 수도 있고
    • 이벤트 그래프로 스크립팅도 가능하다.
  • SaveGame
    • 게임 상태를 로컬 환경에 저장하고 불러오는 기능을 쓸 수 있다.
    • 게임 데이터를 저장하면 Saved/SaveGames 폴더에 게임 데이터가 저장된다.
    • 이 블루프린트 안에서 작성하는 변수들의 상태는 로컬 환경에도 그대로 보존이 된다.
  • CameraShake
    • 카메라가 흔들리는 효과를 줄 수 있는 부모 클래스.
    • 플레이어가 때리거나 보스가 걸어올 때 등등 카메라를 흔들리게 할 수 있다.

노드 종류

  • 노드 추가 시 원하는 노드가 검색해도 안 나오는 이유는 맥락 의존적 (Context Sensitive) 에 체크가 되어 있어서 현재 맥락과 관련있는 노드만 검색되기 때문이다. 이를 체크 해제해주면 된다.
Tip
  • 변수를 노드로 끌어오면 변수 값을 설정할 수 있는 Setter 노드와 Getter 노드를 선택해서 만들 수 있다
  • self 자기 자신(이 블루프린트가 붙어있는 액터/오브젝트)을 노드로 만들 수 있다. self 검색하면 나오는 "자기 자신 레퍼런스" 선택
  • 커스텀 이벤트는 해당 커스텀 이벤트를 호출해주는 함수 노드를 추가해 주어야 이벤트를 발생시킬 수 있다.

🔔 Event

이벤트가 발생할 떄 실행 핀이 활성화된다.

  • BeginPlay
    • 게임이 실행되지마자 가장 먼저 실행됨
    • 1회 실행
  • Tick
    • 유니티의 Update() 함수처럼 매 프레임마다 발생하는 이벤트다.
    • Delta seconds를 출력한다.
      • 프레임간 사이에 경과된 시간을 초 단위로 출력한다. 첫 번째 프레임과 두 번째 프레임 사이에 20ms가 경과 되었다면 Delta Seconds는 0.02로 출력된다.
  • Actor Begin Overlap
    • 유니티에서의 Trigger 충돌 이벤트처럼 이 액터가 다른 액터와 겹칠 때 발생하는 이벤트.
  • Any Damage
    • 나 자신에게 어떤 데미지를 가하는 이벤트가 들어왔을 때
      • Damage -> 들어온 데미지 양을 나타낸다.

🔔 컴포넌트 이벤트

  • Collision
    • Overlapped Actor : 해당 Collision Component 가진 액터
    • Other Actor : 충돌한 다른 액터
    • OnComponentBeginOverlap
      • 호출한 Collision Component에 다른 액터가 겹치기 시작하는 순간에 한 번 발동되는 이벤트.
    • OnComponentEndOverlap
      • 호출한 Collision Component에 다른 액터가 더 이상 겹치지 않고 빠져나가는 순간에 한 번 발동되는 이벤트

🔔 Input

  • Enable Input
    • 기본적으로 언리얼은 액터가 Input을 받아들이는게 비활성화 되어있는 상태라 키보드 입력을 받으려면 이 노드를추가해 주어야 한다.
    • 컨트롤러로 GetPlayerController 리턴값을 연결해주어야 한다.
  • Disable Input
    • 타겟으로 들어온 Actor의 Player Controller에 대하여 입력을 비활성화 한다.
    • 이 노드를 연결해주면 해당 액터는 더 이상 키보드, 마우스 입력을 받을 수 없다.

🔔 String

  • PrintString
    • 노드에 적힌 메세지를 화면에 출력한다.
  • BuildString
    • 문자열로 변환해주고 또한 이를 Append To 문자열에 이를 붙여 준다.

🔔 Transform

  • Set Actor Location
    • 액터의 트랜스폼 위치를 지정한다.
    • 타겟의 위치를 New Location 값으로 지정한다.
  • Set Actor Rotation
    • 액터의 트랜스폼 회전 값을 지정한다.
    • 타겟의 회전값을 New Rotation 값으로 지정한다.
  • Get Actor Location
    • 액터의 현재 위치를 리턴한다.
  • Add Actor World Rotation
    • 해당 값만큼 더하여 회전한다.
  • Make Transform
    • 트랜스폼을 생성한다 (Location, Rotation, Scale)을 입력으로 받아 하나의 Transform으로 생성 및 리턴
  • Get World Location
    • 입력 받은 컴포넌트의 위치를 리턴

🔔 Utility

  • Delay
    • 지연 시간을 둔다.
  • Branch
    • If 문과 같다. Boolean 타입을 리턴하는 것과 Condition 핀을 연결하고, True, False에 따라 실행시킬 노드를 연결한다.
  • 형변환 cast
    • 입력으로 들어온 오브젝트를 해당 유형으로 형변환하여 리턴할 수 있다.
  • Print String
    • 입력 받은 string을 화면에 출력한다.
    • 디버깅 해볼 때 편리하다.
  • Get Diaplay Name
    • 입력 받은 Object의 이름을 리턴한다.
  • Destroy Actor
    • 입력 받은 액터를 삭제한다.
  • Actor Has Tag
    • 입력 받은 액터의 Tag 배열에 해당 원소가 있다면 True 리턴, 없다면 False 리턴.
  • Get All Actors with Tag
    • 해당 액터 Tag를 가진 모든 액터들을 배열에 담아 리턴한다.
  • IsValid
    • 오브젝트 레퍼런스를 입력 받은 후 이 레퍼런스가 유효할 때의 출력 실행 핀, 유효하지 않을 때의 출력 실행 핀. 이렇게 두 가지의 출력 실행핀을 가진다.
    • 유효하다 - 레퍼런스가 참조하는 오브젝트가 존재한다.
    • 유효하지 않다 - 레퍼런스가 아무것도 참조하지 않는다.
  • 스위치
    • 입력으로 들어온 Enum변수의 값에 따라 Enumeration에 속한 모든 Enum 상태들 중, 입력으로 들어온 Enum 변수의 값과 일치하는 상태와 연결된 실행 핀 와이어를 실행한다.
  • 배열 만들기
    • 입력 핀으로 원소들을 각각 지정한다.
    • 입력 받은 원소들로 배열을 만든 후 Array 출력 핀으로 이를 출력한다.
  • ForEach
    • For문 돌릴 배열을 입력받는다.
    • 입력 받은 배열의 모든 원소들 하나 하나에 반복을 진행한다. 배열의 모든 원소 순회가 끝나면 자연스레 종료.
      • Loop Body : 일반 실행 핀과 동일. foreach문이 돌건 말건 반복 시켜놓고 바로 다음 실행.
      • Array Element : 매 반복의 원소
      • Array Index : 매 반복의 인덱스
      • Completed : foreach 문이 다 끝나면 실행 되는 핀
  • Set Timer by Event
    • 시간(float)과 호출 시킬 이벤트를 입력 받음.
    • 시간(float)를 입력 받아, 해당 시간을 타이머로 하여 이 시간이 지나고난 후에 입력 받은 이벤트를 호출함.
  • Set Timer by Function Name
    • 입력 받은 시간이 지나고 난 후에 입력 받은 이름을 가진 함수를 실행한다.
    • Looping에 체크 했다면 입력 받은 시간 주기마다 해당 함수를 실행시킨다.
  • Clear Timer by Funcion Name
    • Timer 를 중지시킨다.
    • 돌아가고 있는 Timer가 있는 Object를 입력으로 받고(안 주면 기본적으로 self. 같은 블루프린트 內) 입력으로 받은 함수 Timer 를 더 이상 돌지 않게 한다.
  • Get All Actors Of Class
    • 해당 레벨의 특정 클래스 타입인, 혹은 그 특정 클래스의 자식 타입인 모든 Actor 들을 찾아 배열에 담아 리턴한다.
    • 따라서 레벨에 액터가 많다면 성능에 부하가 생길 것이다.
    • 유니티의 FindObjectOfType 같은 함수인듯 하다.
  • Set Actor Tick Enabled
    • 입력 받은 액터의 Tick 이벤트를 활성화/비활성화 할 수 있다.
    • 즉, 입력 받은 액터들이 매 프레임마다 하는 기능들을 정지시킬 수 있다.

🔔 Physics

  • Set Simulate Physics
    • 유니티의 Rigidbody처럼 중력, 마찰력 같은 물리 효과를 적용한다.
    • Static Mesh Component에만 적용할 수 있다.
profile
언젠간 전문가가 되겠지

2개의 댓글

comment-user-thumbnail
2023년 7월 20일

뛰어난 글이네요, 감사합니다.

1개의 답글

관련 채용 정보