| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- leetcode
- 헤더 경로
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- A* Algorithm
- Module
- c++ 베이직
- Console
- 코드리뷰
- topdownmove
- 백준
- CS50
- 원카페#무인카페#카페추천#카페맛집
- build.cs
- C++
- 네트워크 기초
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- 브론즈
- Toon Shading
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- 폭설 #미친 날씨
- Unreal
- 툰쉐이딩
- UE_5
- STL
- 언리얼
- Gas
- CS
- Harvard
- 순환 리스트
- 메테리얼
- Today
- Total
목록전체 글 (113)
WN_인생기록
엔진을 쓰다보면 Custom하는 경우가 생기기 마련이다. 이걸 플러그인으로 만들 수 있는데, 먼저 플러그인 처음으로 생성하면 IModuleInterface 를 상속받는 헤더가 있다. 여기에 추가적인 함수들을 추가해주고, 델리게이트로 연결해줘야 한다. (#include "Modules/ModuleManager.h") 를 추가해줘야 한다. private: void InitMenuExtention(); TSharedRef CustomMenuExtender(const TArray& Path); void AddMenuEntry(class FMenuBuilder& Menu); void OnDeleteUnUsedAssetButtonClicked(); 그 다음 cpp 파일에서 ContentBrowserModule.h ..
Slate는 언리얼 엔진 에디터에서 보여지는 버튼, 액션 등등의 모든 UI를 나타내는 창 이라고 보면 된다. detgail panel, file, 등등 전부 Slate Widget에서 나오는 것들이다. 그래서 내가 에디터에서 원하는 동작이 없으면 slate widget을 만들어서 추가하면 그만인 것이다. 물론 엔진에 대한 이해도와 메뉴를 추가할 수 있는 지식이 필요하지만 Slate를 커스텀하기엔 어려운 부분들이 있다. 일단 이 Slate에 대한 코드들은 희귀한 문법을 가지고 있어서 따로 익숙해져야 하고, 언리얼의 강력한 기능인 프리뷰 혹은 코드가 적용될때 바로바로 확인할 수 있는 것들이 있는데, Slate의 경우는 볼 수가 없어서 어려운 것이다. 그중에서 가장 어려운것은, 엔진 커스텀을 위해서는 엔진에 ..
Editor Utility BP를 만들고 하나 불편했던게 바로 처음 에디터를 열자마자 실행이 안된다는 것이었다. 아무래도 모듈이라던가 헤더추가하면 Intermidiate 지우고 다시 실행해야 될때가 있어서 자주 하는데 에디터 끄고 켤때마다 켜야하는게 불편했다. 그래서 에디터 켜자마자 Editor Utility BP를 바로 실행하는 방법을 찾고 싶었다. https://docs.unrealengine.com/4.27/en-US/ProductionPipelines/ScriptingAndAutomation/Blueprints/StartupObjects/ Running Blueprints at Editor Startup Describes how to define Blueprint functions that the..
만약에 특정 기능에서 잘못된 입력이라던가 잘못된 결과가 나올시에 언리얼에서는 메세지 다이얼로그가 뜨는데, 이걸 띄우는걸 해보자. https://docs.unrealengine.com/4.27/en-US/API/Runtime/Core/Misc/FMessageDialog/ FMessageDialog [FMessageDialog](API\Runtime\Core\Misc\FMessageDialog) These functions open a message dialog and display the specified informations these. docs.unrealengine.com 언리얼 문서는 이걸 통해서 확인이 가능하다. if (NumOfDuplicates
라이브러리 중에는 스크립팅 라이브러리가 존재한다. UEditorUtilityLibrary와 UEditorAssetLibrary가 있는데 UEditorUtilityLibrary에는 UObject를 선택하는 것과 FAssetData를 선택하는 기능이 있고 (TArray의 포인터로 데이터 저장) UEditorAssetLibrary의 경우는 에셋의 리스트를 가져오는 기능을 하는거 같다. Editor에 새로운 모듈 추가할때 자꾸 파일헤더를 못찾는데 왜그런지 모르겠다. 모듈에 추가하고 빌드했으면 헤더 찾아야 하는거 아닌가... Intermidiate 때문에 그냥 파일 다 지우고 다시 빌드하는게 맞는지... 싶은데.. 맞다... 결국엔 파일 지우고 다시 빌드하는게 맞다 ㅋㅋ 후... 암튼 이제 파일을 복사하는 기능을..
먼저 툴에 적용할 수 있는 모듈을 만들어 볼 예정인데, Custom Editor Functionalities 는 Assets에 뭔가의 Action을 할 수 있는 것과 Actors에 뭔가를 Action할 수 있는 걸로 나눠진다. Assests ->Action은 AssetActionUtility라는 클래스고 Actors->Action은 ActorActionUtility라는 클래스 이다. 그래서 C++ 코드에서 Asset을 먼저 건드릴 수 있는 툴을 만들기 위해 UFUNCTION(CallInEditor)라는 기능을 통해서 구현해볼 생각이다. 문제는 AssetActionUtility.h 라는걸 추가할려면 현재 나의모듈 빌드cs에 Blutility라는 모듈을 넣어야 하는데 넣고나서도 안되가지고 문제가 있었다. 찾..
모듈 추가 테스트를 할때 모듈 관련해서 자료를 찾아보고 있었다. https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/ProgrammingWithCPP/Modules/ 공식문서에서는 모듈추가하고 나서 생기는 uplugin 에서 Type 과 LoadingPhase를 설정해야 한다고 하는데 Type에는 Runtime과 Editor가 있다. 코드 적용이 에디터를 실행할때 필요한 경우가 있고, 런타임에 실행해야하는 경우들이 있어서 구분한거 같다. LoadingPhase 또한 같은 개념인데, 기본은 Default이지만 로드를 좀 더 빨리 해야하는 경우 혹은 에디터에 적용을 먼저 해야하는 경우는 PreDefault를 권장한다고 나온다.
공식문서를 보면 "Returns the UObject this object resides in"이라고 되어 있는데.... 느낌은 자신을 소유하는 상위 계층의 Object를 반환하는 느낌이다. 언리얼의 계층구조는 World -> Level -> Actor->Component 정도가 되는데 Actor 단계에서 GetOuter()를 하게 되면 -> Level Object가 나오는 그런 기능으로 알고있다. 아마 주로 쓰이는건 Component에서 Actor에 접근하고 싶을때 AActor* OwnerActor = Cast(GetOuter()); 이런식으로 접근해서 쓰지 않을까 싶다.