게임엔진 11

[블루 프린트] 데이터 테이블

Unity의 ScriptableObject와 똑같은 포지션이다.Asset으로 관리되는 DataTable이고 자체적으로 직렬화돼있어 관리가 편하다하지만, 소규모의 데이터테이블로는 사용하기 좋지만 전투나 아이템과 같은 대규모 데이터의 경우에는 UI적으로 관리하기가 어렵다. 1. Structure 생성2. Structure에 필드 추가각각의 필드들은 DataTable의 Column이 된다.3. DataTable 생성 DataTable을 추가하면 Structure를 선택할 수 있다. 미리 만들어 놓았던 CreatureData Structure를 지정한다.미리 만들어 놓았던 Structure의 필드들이 Datatable의 Column이 된 모습이다.Row Name은 Key가 된다. 4. Data Table에 Da..

게임엔진/Unreal 2024.06.18

[블루 프린트] 상속

코드에서도 익히 알고 있던 상속의 개념을 블루프린트에서도 적용 가능하다.자식 블루프린트의 Class Settings를 누르면 Details가 보이고 여기서 Parent Class를 지정해줄 수 있다.상속을 적용해보면 위와 같이 같은 네이밍의 변수들이나 함수들에 에러가 많이 발생하니 당황하지 말자 코드였어도 똑같이 발생하는 에러다. 따라서 부모 블루프린터에 선언한 변수를 자식노드에서 그대로 사용하면 된다. 이제부터 Animation이나 상태에 따른 이벤트 및 이동 로직은 부모에서 관리하고 자식 노드인 플레이어 블루프린트에서는 Input에 따른 상태지정 로직만 남겨둔다.

게임엔진/Unreal 2024.06.17

[블루 프린트] 객체(Actor) 이동

Actor의 이동을 제어하기 위한 블루프린터 function에 대해 알아보자. 1. SetActorLocation키 입력에 의해 현재 상태가 Move일 때, Actor의 새로운 위치를 Set함으로써 이동시키는 function이다.Get Actor Location으로 현재 위치 값을 가져오고, Select를 이용하여 Up, Down, Left, Right에 따라 미리 Vector값을 할당하여 이 두 값을 더해준다. 더해진 값을 Set Actor Location에 전달하여 Actor 위치가 새롭게 갱신된다.프레임에 따라 속도값을 균등하게 맞추기 위해 World Delta Seconds를 Speed에 곱해주었다. Sweep설정을 하면 오브젝트와 충돌처리를 하여 이동을 막는다. 2. AddMovementInpu..

게임엔진/Unreal 2024.05.05

[블루 프린트] Enum

1. Enum 만들기 Enum을 추가하여 관리해줄 상태들을 등록한다. (EDirection으로 명명함) EDirection이라하는 Enum 자료형으로 Direction 변수를 생성한다. Direction 변수를 블루프린터 상에 드래그 앤 드랍하여 Get Direction과 Set Direction을 볼 수 있다. - 예시를 살펴보면 MoveUp/MoveRight노드(Axis Mappings)로 부터 값을 받아온다.  (https://codejb.tistory.com/146의 입력매핑 참고)- 최적화를 위해 Compare Float 매크로를 이용하여 Input 값이 0.0으로 ==인 경우에는 기능을 비워두고 초과 혹은 미만인 경우 Direction에 값을 Set해주고 있다. 이로써 Direction의 Va..

게임엔진/Unreal 2024.05.05

[블루 프린트] 상태에 따라 분기 나누기 Switch와 Select 노드

Direction 상태에 따라 FlipBook을 제어하려고 할 때, Switch를 이용하느냐, Select를 이용하느냐에 따라 블루프린터를 조금 더 간략하게 디자인할 수 있다.1. Switch 이용 Direction Enum에 따라 Up,Down,Left,Right 실행(Exec)핀이 생성되었고, 핀을 Set FlipBook노드에 연결한 모습이다. 2. Select 이용  Select 노드에서 한 번에 Flipbook값까지 설정해주고, 이를 리턴하여 Set FlipBook노드에 전달한 모습이다. 훨씬 간결해진다. 이게 가능한 이유는셀렉트에서 핀타입을 자유롭게 변경 가능하기 때문이다.여기서는 핀 타입을 Paper Flipbook으로 했고 Index가 Direction Enum(Up,Down,Left,Rig..

게임엔진/Unreal 2024.01.31

[블루 프린트]입력 이벤트 여러가지 방법

1. 블루 프린트 이벤트 이용 (나이브한 방식)- 블루 프린트에서 오른쪽 마우스 클릭- Keyboard Events에서 원하는 입력 이벤트 노드를 사용한다. 2. 언리얼 엔진의 입력 세팅 이용 (언리얼 권장) (문서)https://www.unrealengine.com/ko/blog/input-action-and-axis-mappings-in-ue4동작 매핑(Action Mapping) :  키 누르고 뗴는 데에 대한 액션축 매핑(Axis Mapping) : 연속적인 범위가 있는 입력에 대한 액션(키 입력에 대한 value를 설정한다는 의미) 동작 매핑Action Mappings에 Attack이라는 함수를 등록함으로써 InputAction Attack이라는 노드가 자동으로 추가된 모습.Space Bar를 ..

게임엔진/Unreal 2024.01.30

클래스와 구조체 차이

클래스와 구조체 가장 큰 차이 1. 클래스는 힙 메모리에 할당된다 vs 구조체는 스택 메모리에 할당된다.=> 클래스는 GC관리 대상 / 구조체는 GC관리 대상이 아니다.2. 클래스는 상속이된다. vs 구조체는 상속이 안된다. 잘못된 사실 1. 구조체에 선언된 필드의 총 사이즈가 16이 넘으면 힙에 할당된다는데 이는 잘못된 사실이다. 2. 구조체에 클래스 타입을 필드로 가진다고 해서 "구조체" 자체가 힙에 할당되는 것은 아니다. 단지, 클래스 타입의 필드는 그 인스턴스만 힙에 있고 그 인스턴스를 가리키는 포인터 값은 구조체 내에 존재하며 따라서 스택에 구조체가 유지된다는 사실에는 변함이 없다. 언제 클래스? 언제 구조체? Choosing Between Class and Struct - Framework D..

게임엔진/Unity 2023.07.03

List를 사용할 때 Reserve해야하는 이유

List는 Size가 가변적인 Collection이다. List에 데이터를 Add할 때 내부코드는 아래와 같다. => Add 를 호출하면 현재 배열의 사이즈를 비교하고 if (this._size == this._items.Length) 가득찼다고 판단하면 EnsureCapacity 메서드를 호출한다.=> EnsureCapacity를 보니, Length가 0이 아니면 무조건 Length의 2배를 Capacity Property에 할당해버림 => 일단 new T[value]로 destinationArray라는 새로운 배열 객체를 생성하는데, EnsureCapacity로부터 받은 원래 사이즈의 두배 만큼의 메모리공간을 할당함. => 그 다음 destinationArray에 원래 데이터들을 Copy한다음의 기존..

게임엔진/Unity 2023.07.03