일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코딩테스트
- 코테
- ue4macro
- 다이나믹프로그래밍
- 언리얼
- 동적계획법
- UnReal
- Unity
- UE5
- dfs
- EffectiveC++
- 프로그래머스
- 알고리즘
- Widget
- uproperty
- HTTP
- 코테연습
- 문자열
- AIPerception
- UE4
- server
- c++
- blueprint
- Stimuli
- UMG
- DP
- 재귀
- 유니티
- 언리얼4
- 나나이트
- Today
- Total
목록UnReal (10)
공부 기록
AI Perception 이란? 인공지능이 특정 감각을 통해 사물을 인지할 수 있도록 하는 기능으로, 각각의 Sense를 통해 Enemy(ex. 플레이어) 혹은 일반 오브젝트를 감지할 수 있다. 사용 방법은 아래 이어서 설명하도록 하겠다. #1 AI Controller에 AI Perception 컴포넌트 추가 사물을 감지할 AI 캐릭터의 컨트롤러에 AIPerception 컴포넌트를 추가해준다. 이때 폰이 아니라 컨트롤러에 추가해주는 것을 잊지 말자. #2 AI Perception 디테일 설정 Sense Config Sight : AI의 시야에 들어오는 사물 인지 Hearing : 소리를 내는 사물 인지 Touch : 충돌한 사물을 인지 Damage : 대미지를 입힌 물체를 인지 Predicton : 상대..
BlueprintImplementableEvent는 C++에 선언해놓은 함수를 블루프린트에서 정의할 수 있도록 하는 UFUNTION의 지정자이다. 이 지정자를 사용하는 C++의 함수에는 파생 클래스에서 함수 내용을 재정의할 수 있도록 하는 Virtual 키워드를 붙일 수 없으며, 만약 붙여 사용하고 싶다면 C++와 BP에서의 구현이 모두 가능한 BlueprintNativeEvent를 사용하도록 한다. 또한 이 함수의 파라미터로 FString을 넘겨줘야 한다면 const FString& 으로 상수 객체 참조에 의한 전달을 해줘야 오버로딩 관련 컴파일 에러가 발생하지 않으므로 주의하도록 하자.
ue4 file upload to server using http post request 언리얼에서 지원하는 Http request 를 통해 서버에 파일을 업로드 하는 방법이다. POST 방식을 사용하며, url에 정보를 포함하는 GET과 달리 POST는 body에 정보를 담아 보내므로 바디 부분을 직접 작성해줘야 한다. 이때 파일을 담으려면 multipart/form-data 형식을 사용해야 하며, multipart는 정보를 여러개 보낼 때 사용하므로 서버가 각각의 정보를 어디서부터 어디까지 읽을지를 지정해주기 위해 boundary 플래그를 사용해야한다. boundary는 다른 정보와 겹치지 않는 랜덤화된 문자열을 사용하고, body를 읽기 전에 서버가 알 수 있도록 헤더에 포함해준다. 헤더에 알맞은 ..
위젯 리플렉터는 엔진 슬레이트 위젯의 계층구조와 그 정보를 알 수 있는 툴이다. Window > Developer Tools > Widget Reflector 을 통해 사용할 수 있다. 위젯 리플렉터를 열면 아래와 같이 마우스가 위치한 엔진 위젯에 형광색의 테두리가 표시되며, 위젯 리플렉터 창에서는 마우스 움직임을 실시간으로 반영해 원하는 위젯의 계층구조를 확인할 수 있다. 자세한 정보를 보고 싶은 위젯에 마우스를 올린 채로 ESC 버튼을 누르면 실시간으로 마우스 움직임을 반영하던 계층구조 창이 일시정지 되며 위젯의 현재 상태와 위젯이 구현된 코드 줄의 위치 등 자세한 정보를 확인할 수 있다. 다른 위젯의 계층구조도 확인하고 싶다면 왼쪽 위의 주황색 버튼(일시정지 시에는 회색이 된다)을 눌러 일시정지를 ..
데이터 은닉을 위해 변수를 private으로 설정하면 언리얼 에디터에서 해당 변수에 접근할 수 없다. 만약 매크로에 EditAnywhere를 설정했다면 컴파일 에러가 발생할 것이다. 그럴땐 프로퍼티 매크로 중 하나인 Meta를 아래와 같이 사용하면 된다. private: UPROPERTY(EditAnywhere, Meta = (AllowPrivateAccess = true)) int num; 이렇게 하면 프라이빗 변수를 에디터에서 접근 및 수정할 수 있다.
Get Array from Http Json php 파일로부터 웹 상에 존재하는 파일 리스트를 받아오는 방법에 대해 포스팅 하려고 한다 php의 주소 지정은 블루프린트를 이용하여 Http Call 함수에 전달해주었고 아래 함수는 HttpCall에 바인드 된 함수이다. 기본적인 json 형식의 데이터를 받아오는 것은 다른 블로그에도 많아서, 내가 찾는데 애먹었던 배열을 얻는 기능만 써두려고 한다. { "key" : [ "value0" , "value1", ... , :valueN"] } 형식의 array를 받아오는데 쓰이는 코드이다. void AMyHttpActor::OnResponseReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool vW..
Runtime File Directory Open C++ 런타임 중에 코드로 파일 탐색기를 여는 방법이다. 선택한 디렉토리의 경로를 가져오거나, 디렉토리 안의 파일 목록을 가져올 수 있다. 1. 선택한 디렉토리 경로 가져오기 디렉토리를 선택할 경로를 넘겨주고 디렉토리 탐색기를 연다. 열린 탐색기에서 디렉토리를 선택하면 그 경로를 받아온다. #include "DesktopPlatform/Public/IDesktopPlatform.h" #include "DesktopPlatform/Public/DesktopPlatformModule.h" void UFunctionLibrary::GetOpenDirectoryDialog(FString DirectoryPath, FString& Directory, bool& I..
Asset List / File List from Path 에셋 목록 가져오기 path 형식은 "/Game/Content/원하는폴더명" path의 마지막 부분에 슬래시/가 있으면 인식 못함 FAssetData 를 반환 #include "AssetRegistry/AssetRegistryModule.h" TArray AMyPlayerController::GetMeshListByPath(FString RootFolderFullPath) { FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked(FName("AssetRegistry")); IAssetRegistry& AssetRegistry = AssetRegistryModul..