언리얼의 데이터를 json 파일로 추출하는 방법에 대해 알아보자 예제 파일 이전 로드 예제에서 사용했던 예제파일과 동일하게 출력되도록 할 예정이다. { "name" : "Kim" "level" : 20, "items" : [ { "itemid" : 100, "count" : 3, } { "itemid" : 200, "count" : 1, } ] "skills" : [ "fireball", "icebolt", ] } 파일 내용 작성 JsonWriter에 직접 Key Value를 입력하는 방법과 데이터를 가공한 JsonObject가 있다면 FJsonSerializer::Serialize 함수를 통해 자동 입력하는 방법이 있다. //Key Value 입력하는 방식 FString FileStr; FString ..
개요 언리얼 엔진에서 Json 포멧의 파일을 읽어들이는 방법을 알아보자 설정 [projectname].build.cs 프로젝트에서 Json 모듈을 추가하자 // Fill out your copyright notice in the Description page of Project Settings. using UnrealBuildTool; public class MyProject : ModuleRules { public MyProject(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; PublicDependencyModuleNames.AddRange(new string[] { "Core",..
데이터 레이어는 월드 파티션 내부의 시스템으로, 액터를 별도 레이어로 구성하는데 사용된다. 데이터 레이어에 액터 추가 데이터 레이어 컨텍스트 메뉴에서 새 데이터 레이어에 선택한 액터 추가 및 선택된 데이터 레이어에 선택된 액터 추가 항목을 선택 월드 아웃라이너에서 선택한 액터를 데이터 레이어 아웃라이너의 데이터 레이어에 드래그 액터의 디테일 패널에서 데이터 레이어 섹션을 사용 데이터 레이어 아웃라이너 창 -> 데이터 레이어 옵션을 선택하면 데이터 레이어 아웃라이너 창이 열린다. 데이터 레이어는 계층구조를 가진다. 데이터 레이어 단위로 액터를 보임/숨김 처리 할 수 있다. 데이터 레이어 단위로 런타임 로드 설정을 할 수 잇다. 데이터 레이어에 속한 액터 목록을 볼 수 있다. 액터의 디테일 패널 액터의 디테..
월드 파티션은 언리얼 엔진 5로 넘어오면서 대규모 월드를 관리하기 위해 언리얼 엔진 4에서 사용되었던 월드 컴포지션을 대체하는 시스템이다. 월드 컴포지션의 경우 레벨안에 서브레벨을 두어 관리하는 방식이였다면, 월드 파티션은 단일 퍼시스턴트 레벨에 월드를 저장하여 스트리밍 소스와 셀의 거리에 따라 로드, 언로드를 조절하는 시스템이다. 월드 파티션은 다음 4가지 큰 특징이 있다. 액터당 한개의 파일 (One File per Actor) 월드 파티션 - 데이터 레이어(Data Layers) 레벨 인스턴싱 (Level Instancing) 월드 파티션 - HLOD (Hierarchical Levels of Detail) 월드 파티션 활성화 월드 파티션을 활성화 하기 위해서는 3가지 방법이 있다. 게임 카테고리에..
3D로의 전환 그동안 3D애셋을 사놓은게 있어서 3D로 다시 개발하기로 하였다. 타일 그리드 클래스를 작업 2D에서는 유니티에서 제공하는 Tilemap클래스를 사용하였는데 3D에서도 사용할 수는 있으나 타일이 좌표 정중앙에 위치하지 못하는 등의 좌표 이슈가 있어서 그냥 그리드 클래스를 별도로 생성하여 관리할 수 있도록 하였다. 타일 마우스 오버처리 매프레임 마우스 포지션을 가지고 RayCheck를 하여 오버된 타일을 처리할 수 있도록 작업하였다. 기존 2D에서는 Tilemap 클래스에 Screen 좌표를 넣으면 타일 인덱스를 반환해주는 함수가 있었다. 유닛 모델링 추가 및 Idle 애니메이션 처리 예전에 사놓은 SyntyStudio의 모델링을 사용하여 타일과 유닛 모델링을 추가하였다. 애니메이션은 애셋스..
제네릭을 활용하는 타입, 함수, 메서드를 직접 선언하는 방법을 살펴보자. 함수로부터 중복 제거하기 먼저 제네릭 타입을 사용하지 않고 함수로부터 중복된 코드를 제거하는 방법을 알아보자. fn main() { let number_list = vec![34, 50, 25, 100, 65]; let mut largest = number_list[0]; for number in number_list { if number > largest { largest = number; } } println!("가장 큰 숫자: {}", largest); } 두 개의 리스트에서 가장 큰 값을 찾으려면 위 예제를 복사하여 두번 실행 하면 된다. 이런 중복 코드를 없애려면 정수의 리스트를 매개변수로 전달받아 작업을 실행하는 함수를 ..
소프트 스킬 / 존 손메즈 33살에 은퇴했다는 개발자의 노하우 책이다. 지금보다 저 연차일 때 읽었으면 더 도움이 되었을 것 같다. 개발 뿐만 아니라 재테크, 연애 이야기까지 나와서 신선하긴 한데 따라 하기는 힘들 듯. 그러나 다른 건 몰라도 생산성 계획 부분은 커스터마이징 하여 실천해 보고자 한다. 하지만 재밌게 읽었다고 했지, 책의 내용을 다 지킨다고는 안 했다. 나는 나만의 길을 간다. 기록 책임의 범위를 넓히는 방법 - p.106 지금까지 등한시해온 문제 중 하나를 골라 당신이 책임지고 이끌어나갈 만한 프로젝트로 만들어라. 신입 팀원이 업무에 적응할 때까지 도와주는 역할을 맡아라. 업무 절차를 기록하고, 이러한 문서를 항상 최신 정보로 채워두는 역할을 맡아라. 누구나 피하려 하지만 당신이 맡아서 ..
미리 알림: 이 글은 필자의 이해를 위해 개인적으로 정리한 글이니 틀린 내용이 있을 수 있음. 다른 더 좋은 블로그 글이나 관련 사이트 글을 보는 것을 추천합니다. 참고 출처 바로보기 시작하며 부끄러운 이야기지만... 뭔가 알긴 아는데 개념을 정확히 모르는 게 많다. (사실 모르는 건 부끄러운 게 아니다. 아는 척하는 게 부끄러운 거지.) 자격증 공부하다가 SSL, TLS 가 보기에 나오는 경우가 많아서 이번에 정리해보기로 한다. 1. SSL 이란 Secure Sockets Layer, 보안 소켓 계층 SSL이란 암호화 기반 인터넷 보안 프로토콜 인터넷 통신 간의 전송되는 개인정보 보호, 인증, 데이터 무결성을 보장한다. SSL은 현재 사용 중인 TLS 암호화의 전신 요즘은 주로 TLS 인증서를 사용하지..
다시 유니티 언리얼로 개인 프로젝트를 진행하였는데 회사에서 작업하듯 블루프린트가 아닌 네이티브 코드 개발로만 진행하려니 진행이 더디고 맞는 애셋을 찾기 힘들어 다시 유니티로 새로운 프로젝트를 진행하였다. 시작하며 문명의 시스템을 따라 4X 장르의 게임을 만들어보려고 한다. 그래서 우선 기본적인 문명 시스템 부터 개발하고자 하였다. 문명의 가장큰 특징은 6각(헥사) 타일이다. 유니티에서는 헥사 타일맵 기능을 제공하고 있으니 해당기능을 활용해보자. 헥사 타일맵 유튜브 Unity 공식 채널에 헥사 타일맵 튜토리얼 영상이 있어 해당 영상을 따라 진행하였다. https://www.youtube.com/watch?v=bcPqdCSGCls 유니티 무료 애셋을 활용 하여 타일 팔레트를 생성 코드로 땅과 물을 번갈아가며..
시작하며 내돈내산 말해보카 1년 후기를 남기고자 한다. 학습 기간 : 2021년 7월 ~ 현재 나의 영어 실력 21년 하반기부터 22년 초까지 OPic을 4연속 쳤는데 4연속 IH 가 나왔다. 안타깝게도 스트레스 없는 회사 생활을 위해서는 AL 이 필요하다. 나름 그래도 OPic 스크립트도 공부하고 친 시험인데... 그 이후로는 짜증 나서 더 이상 시험 치지 않고 말해보카만 꾸준히 하고 있다. 오픽을 떠나서 말해보자면...영어 스피킹이 자유롭지도 않고, 뭐 그렇다고 리스닝이 뛰어난 것도 아니고, 회사에서 영어로 메일 써야할 일 있으면 번역기부터 켜는 보통의 한국인이다. 말해보카를 선택한 이유 영어를 잘하는 건 어딜가나 굉장한 장점이다. 앞서 말했듯 스트레스 없는 회사 생활, 그리고 개인적인 덕질을 위해서..
시작하며 놀랍게도 정규표현식은 매번 볼 때마다 새롭다. 머릿 속에 지우개가 있는지 돌아서면 까먹는다. 따라서 아래 사이트에 접속하여 문법을 확인하면서 정규식을 작성하자. 정규 표현식 테스트 사이트 regexr : 정규 표현식을 그룹별 시각화 및 테스트 지원 regexper : 정규 표현식을 시각화하여 보여줘서 매우 이해가 쉬움 regex101 : 퀵 레퍼런스 등이 있어 학습 용이
개요 프로퍼티의 메타데이터 지정자 중에 GetOptions 항목에 대해 알아 보자. GetOptions: FName이나 FString 속성에 대해 에디터 환경에서 텍스트 상자대신 드롭다운을 생성하는 기능 드롭다운의 내용은 함수의 결과값으로 채워진다. 함수는 에디터에서 블루프린트를 열 때 한번 호출되고, 사용자가 드롭다운을 클릭할 때마다 호출 된다. 사용 방법 GetOptions 지정자 다음에 함수명을 지정한다. 함수는 FName 또는 Fstring의 배열값을 반환해야 한다. UPROPERTY(EditAnywhere, meta = (GetOptions="GetElementalOptions")) FString Elemental; UFUNCTION() TArray GetElementalOptions() { r..