본문 바로가기

전체 글

[05] Unreal Singleton/Get Actor of Class 저번에는 ChangeRoom 함수가 작동되는걸 확인해봤고, 이제 UI(위젯 블루프린트)랑 연결시켜서 입력가능 텍스트 위젯과 버튼으로 함수를 작동시켜볼 차례다. 그런데 블루프린트 위젯에서 Room에 대한 정보에 접근할 수 없었다.그 해결책으로는 몇가지 방법이 후보군에 있었는데, 당장 생각할 수 있는 것으로는 1. 노드의 Get Actor of Class로 Room을 모아놓은 Spawner에 접근한다.2. Spawner를 전역 선언해서 사용한다.3. 이 위젯의 참조에 Spawner를 넣어놓는다.  가 있었다. 여기서 보통 1번을 쓴다고는 하는데, 유니티에서 싱글톤을 쓰느라 익숙해지기도 했고, Spawner가 월드에 하나밖에 존재하지 않으니까 싱글톤을 써도 될 것 같아서 2번으로 진행해봤다.그렇게 만든 블루프.. 더보기
[04] Actor Spawn, Algo/Sort 외형과 수치를 가지게 된 유닛을 월드에 소환할 생각이다.그러기 전에, 유닛이 어디에 소환될 지에 대한 정보가 없으므로 유닛 소환 위치를 지정하는 방에 대해 먼저 작성해보자.20x20x15 m 크기의 방. 이 방이 5x5로 총 25개 배열된 곳을 월드처럼 사용할 것이다.그리고 각 방에 Spawn Point를 저장하고, 저장한 Point에 유닛을 소환시키는게 목표가 된다.그러니 RoomBase.cpp 파일을 만들어서 SpawnLocations를 저장할 수 있는 벡터를 만들어주자.UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Room 관련", meta = (AllowPrivateAccess = "true"))TArray SpawnLocations;이제 각 .. 더보기
[03] Pawn C++ Class 언리얼 웨비나를 따라한 것을 정리하기 전에, 개인적으로 만들어보고 싶은 것을 먼저 정리하자.  원하는 것은, 미리 입력해놓은 이동 동선에 따라서 자동으로 움직이는 NPC 유닛.이 NPC가 다른 진영의 NPC와 만나면 서로 전투를 시행하고, 전투가 끝나면 다시 이동시키고 싶다.그럼 어떤 유닛이던간에 그 틀이 될 C++ 클래스를 하나 만들어야 하는데, '없음'과 '캐릭터', '폰', '액터' 등의 부모 클래스가 있다. 간략하게 설명하면 움직일 일이 없는, 간단하게 월드에 배치할 오브젝트는 Actor, 조작가능한 오브젝트와 간단한 이동을 하는 오브젝트는 Pawn, 플레이어가 직접 움직이는, 인간형 캐릭터에 주로 사용되는 것이 Character이다. Actor > Pawn > Character 순서대로 상속받는.. 더보기
[02] Unreal Engine Learning Your First Hour in Unreal Engine 5.2의 6 ~ 9 번을 마저 이어서 해보도록 하자.편집 -> 프로젝트 세팅에서는 더 많은 설정을 건들 수 있는데, 그 중에는 빛, 렌더링도 있다. 빛 설정 전에 기본적인 설정을 여기서 건들 수 있다. 퍼포먼스를 원하는 것에 따라서 설정해주면 좋다.(None이 최고 퍼포먼스)이후 Directional Light에서 강도와 컬러를 설정해줘서 빛 세팅을 이어나갈 수 있다. 이때, 밝기 세팅이 진짜 밝기를 결정하지는 않는데, 이는 게임에서 적용될 시각 적응을 미리 해놓기 때문이다. '라이팅 포함'에서 게임 세팅을 제외하면 밝기 수치 그대로를 확인할 수 있다. Sky Light도 마찬가지로 설정할 수 있다. Directional Light가 태양을 모방.. 더보기
[01] Unreal Engine Learning 유니티를 찍먹해보았으니, 다음은 언리얼을 찍먹해볼 차례가 됐다.그러기 위해서 하드 용량을 좀 비워놓고, 에픽게임즈 스토어를 설치한 후에 언리얼 엔진 5.3을 다운받았다.그리고 살짝살짝 건드려봤을때, 유니티를 처음 만져봤을 때처럼의 당혹감이 들었다.(조금 줄어든 상태로)UI의 어색함과 처음 보는 단어들의 등장은 직관으로 해결하려고 해도 사고에 버벅임을 주기 마련. 우선은 각각 기능이 어디에 쓰이는지 알아볼 필요성을 느꼈다.그리고 찾은 것이 바로 공식 홈페이지의 메뉴. 재밌는 점은 유니티를 사용했던 사람들을 위한 언리얼 엔진이 따로 정리되어 있었다. 덕분에 조금 빠르게 정리할 수 있었다. 친절하게도 유니티의 UI를 가져와서 설명도 해준다.헷갈리는 용어같은 것을 비교해놓은 것도 있다. 위처럼 어느정도 살펴본 .. 더보기
[完] 인벤토리, 아이템 제작 요약 이번에 팀 프로젝트 동안 만든 것 중 인벤토리에 관한 것만 구조도로 따로 정리해보자. 정리하면서 아쉬웠던 점도 같이. 먼저 만들어낸 가장 기초적인 Item Slot이다. 슬롯의 정보 세팅, 변경과 마우스에 관련된 이벤트들이 있다. 아이템 슬롯을 드래그해 옮기는 것으로 드랍, 교체 등이 가능하고 정보를 확인할 수 있다. 이 Item Slot에서 파생되는 것으로는 CreateSlot, QuickSlot이 있다. 각자 ItemSlot에서 기능이 조금 빠지기도 하고, 더해지기도 했다. 이 부분이 살짝 아쉬운데, Slot 자체로 할 수 있는 역할을 맨 위에 놓고, 그 맨 위에서 따로 상속을 받아왔으면 좋겠다는 생각이 든다. ItemSlot을 베이스로 QuickSlot과 CreateSlot을 만들다보니, 몇몇은 깡.. 더보기
[05] 아이템 슬롯 상속, Create Table 아이템 슬롯을 상속 받아서 사용한 것 중 하나가 제작 슬롯. 그 제작 슬롯 뭉치의 한 덩이를 관리하는 것이 바로 Create Table이다. private int targetItemID; private int targetItemAmount; [Serializable] public class materialItem { public CreateItemSlot slot; public int materialItemID; public int materialItemAmount; } public CreateItemSlot targetItem; public materialItem[] materialItems; 위는 Create Table의 구성 요소로, 타겟 아이템(제작이 될 아이템)과 거기에 들어가는 재료 슬롯(재료.. 더보기
[04] 아이템 슬롯 상속, 퀵슬롯 아이템 슬롯은 SetSlot() 함수를 포함해, 드래그와 포인터, 클릭 이벤트들을 대량으로 포함하고 있다. 그렇지만 아이템 슬롯이 다 똑같지는 않은데, 이번에 제작하는 게임에서의 아이템 슬롯은 3가지 종류가 있다. 1. 인벤토리 슬롯 2. 퀵 슬롯 3. 제작창 슬롯 똑같이 아이템 ID를 기반으로 아이콘과 정보들을 데이터베이스에서 읽어와서 입력해놓지만, 각자 가지고 있을 기능은 조금 다르다. 인벤토리 슬롯 퀵슬롯 제작 슬롯 툴팁 설명 TRUE FALSE TRUE 드래그-드랍 TRUE TRUE FALSE 아이템 삭제 TRUE FALSE FALSE 아이템 사용 FALSE TRUE FALSE 슬롯 세팅 TRUE TRUE FALSE 이 세 슬롯은 공통점을 공유하니, 완전 각자 독립적으로 짜는 것은 비효율적이다. .. 더보기