본문 바로가기
반응형

분류 전체보기424

Unreal C++ 언리얼 Delegate 델리게이트 [Unreal/C++] 언리얼 Delegate 델리게이트 Delegate (델리게이트)로 C++ 오브젝트 상의 멤버 함수 호출을 안전한 방식으로 할 수 있다. 델리게이트를 사용하여 임의 오브젝트의 멤버 함수에 동적으로 바인딩시킬 수 있으며, 그 오브젝트에서 함수를 호출할 수 있습니다. 델리게이트 오브젝트는 복사해도 안전하다. 델리게이트는 값으로 전달 가능하지만 heap 에 메모리를 할당해야 하기 때문에 추천하지 않는다.가급적 델리게이트는 참조 전달해야 한다.델리게이트는 싱글-캐스트와 멀티-캐스트 모두 지원된다.다이나믹 델리게이트도 안전하게 Serialize 시킬 수 있다. 델리게이트 선언델리게이트의 선언은 제공되어 있는 선언 매크로 중 하나를 사용한다.사용되는 매크로는 델리게이트에 바인딩되는 함수의 시그.. 2023. 11. 2.
Unreal 컴파일 시 사운드 벨소리 제거 방법 [Unreal] 컴파일 시 사운드 벨소리 제거 방법에디터 개인 설정 -> 레벨 에디터-> Miscellaneous -> 사운드 -> 에디터 사운드 활성화 체크 해제 2023. 11. 2.
Unreal C++ Actor의 충돌 구현 Actor BeginOverlap [Unreal/C++] Actor의 충돌 구현 Actor BeginOverlap Actor로부터 상속받은 클래스는 ActorBeginOverlap 이벤트를 가지고 있다.항상 델리게이트나 이벤트의 함수명은 On으로 시작한다. 충돌하려는 각 액터에 충돌체가 최소 하나 이상 존재해야하고해당 충돌체는 GenerateOverlap 이벤트가 켜져 있어야 충돌 검사가 가능하다. GenerateOverlap 이벤트는 에디터 디테일 패널의 Collision 안에 있다. OnActorBeginOverlap과 OnActorEndOverlap은 다이나믹 델리게이트로 구성되어 있다.OnActorBeginOverlap에서 F12를 눌러 타고 들어가면 Actor.h에 다음과 같이 구현되어 있다.일반 델리게이트는 파라미터의 순서와 .. 2023. 11. 2.
Unreal C++ Draw Debug : 오브젝트 그리기 [Unreal/C++] Draw Debug : 오브젝트 그리기Box, Sphere, Point, Circle, Line, Arrow를 그려본다. DrawDebugSolidBox(GetWorld(), Location[0] + Box.GetCenter(), Box.GetExtent(), FColor::Red);Solid Box : 월드, 중심 위치, 넓이, 색상을 추가한다.DrawDebugSphere(GetWorld(), Location[2], 100, 20, FColor::Blue); Sphere  : 월드, 중심 위치, 반지름, 분할정도, 색상을 추가한다.DrawDebugPoint(GetWorld(), Location[1], 100, FColor::Red); Point : 월드, 중심 위치, 크기, 색상.. 2023. 11. 2.
Unreal C++ 편리한 매크로 함수 위치(__FUNCTION__ ), 호출된 라인(__LINE__ ) [Unreal/C++] 편리한 매크로 함수 위치(__FUNCTION__ ), 호출된 라인(__LINE__ ) __FUNCTION__ : 현재 호출된 함수이름을 나타내는 매크로 __LINE__ : 현재 호출된 해당 라인을 나타내는 매크로 __FILE__ : 파일의 경로를 나타내는 매크로 코딩을 하다보면 클래스와 수많은 코드들을 마주하게 된다.이때 함수의 위치나 호출된 라인이 궁금할 때가 있다.특별한 경우에 찾아야 하거나 에러가 의심될 때 사용하면 편리하다. CLog::Log(__FUNCTION__, __LINE__);위와 같이 구현해두면 편리함을 느낄 수 있다.클래스명과 호출된 함수, 그리고 호출된 라인까지 출력된다. 2023. 11. 2.
Unreal C++ Debug Log (BP:Print String) 출력 방법 [Unreal/C++] Debug Log (BP:Print String) 출력 방법 언리얼 블루프린트에서 Log 를 출력하는 방법은 PrintString을 사용하면 된다.Screen에 출력하는 것과 Log에 출력하는 방법 두가지가 기본적으로 체크되어 있다. 블루프린트에서 PrintString을 진행하면 위와같이 OutputLog 창과 Screen에 출력된 로그를 볼 수 있는데C++에서는 출력 방법이 나뉜다.UE_LOG로 출력하는 방법과 UEngine의 AddOnScreenDebugMessage로 출력하는 방법이 있다.UE_LOG는 define으로 정의되어 있고 Screen은 함수로 구현되어 있다.#include "Engine.h"헤더파일을 추가해야하며 컴파일 시간이 꽤 오래걸릴 수 있다. UE_LOGUE.. 2023. 11. 2.
Unreal Property System(Reflection) [Unreal] Property System(Reflection) 언리얼에서는 리플렉션 시스템을 프로퍼티라고 부른다. 왜냐하면 리플렉션은 그래픽 용어이기도 하기 때문이다. 프로퍼티 시스템에 등록했으면 하는 타입에 매크로를 달아두면 Unreal Header Tool(UHT)가 프로젝트를 컴파일할 때 정보를 수집한다.  예를 들면 다음 코드와 같다. // 리플렉션이 있는 타입은 이 헤더파일을 인클루드해서 UHT에 알린다.#include "MyObject.generated.h"// MyObject는 리플렉션 되는 클래스임을 나타낸다.UCLASS()class UMyObject : public UObject{ // 자동 생성된 코드가 여기에 삽입된다는 마커. GENERATED_BODY() .. 2023. 11. 2.
Unreal C++ Class Name.Generated.h 역할 [Unreal/C++] Class Name.Generated.h 역할 Reflection(리플렉션)이란 요약하면 프로그램의 런타임 시점에서 객체의 정보, 구조를 관리 & 수정 할 수 있게 엑세스 하는 것을 의미합니다, Java나 C# 등 에서는 리플렉션을 지원하지만 C++에서는 지원하지 않아 언리얼에서는 자체적으로 리플렉션이 구현되었습니다. 이것을 "언리얼 프로퍼티 시스템"이라고 하는데 메크로 함수 형태로 되어 있으며 이것을 통해 GC(Garbage Collection)나 블루프린트와 연동 등을 할 수 있습니다. 언리얼 엔진에서 매우 중요한 개념인 리플렉션(언리얼 프로퍼티 시스템)을 위한 헤더 파일이다. 해당 헤더가 있어야 리플렉션이 있는 유형에서 해당 클래스를 고려해야 하고 시스템 구현에 필요함을 언리.. 2023. 11. 2.
Unreal C++ CoreMinimal.h, Engine.h [Unreal/C++] CoreMinimal.h, Engine.h 언리얼 엔진은 4.16부터 IWYU 모델을 사용하여 코드 컴파일을 최적화 했다.과거에는 Engine.h를 포함했으나, Engine.h에서는 많은 헤더파일을 포함하고 있어 컴파일에 시간이 많이 소요되었다.헤더 파일을 한꺼번에 컴파일하다보니 병목현상이 발생하여 컴파일 속도를 위해 필수 헤더파일만을 포함하고 있는 CoreMinimal.h만을 포함하였다. IWYU는 Include-What-You-Use이다. 해석하자면 '너가 원하는 것만 포함'하라는 의미이다.이 모델을 사용하게 되면 각각 새로 생성한 클래스 헤더에 CoreMinimal.h를 추가하여 최소한의 코드만 클래스에 Include하여 사용하고, 이 외의 코드는 cpp소스파일에 추가한다. .. 2023. 11. 2.
Unreal C++ UE_LOG, GEngine Debug가 보이지 않는 현상 [Unreal/C++] UE_LOG, GEngine Debug가 보이지 않는 현상UE_LOG is not workingGEngine->AddOnScreenDebugMessage is not working 언리얼에서 Log를 남기기 위해 C++ 작업 도중 보이지 않는 현상은 에디터를 재시작 하면 해결된다.별거 아닌 문제지만 이러한 버그를 찾는데 검색하고 이것저것 해보는 시간을 쏟기 아깝다. 2023. 10. 29.
Unreal 프로젝트 셋팅 Export, Import [Unreal] 프로젝트 셋팅 Export, Import 언리얼에서 프로젝트 셋팅을 저장하고 불러올 수 있다.방법은 간단하다. Edit->Project Settings에 들어가서 가져오고 싶은 셋팅 내용을 Export 하여 파일로 저장한 후대상 프로젝트에서 Import를 하면 된다. 모든 셋팅을 바꾸고 싶은 경우에는 모든 셋팅에서 Export를 하면 된다. 2023. 10. 28.
Unreal C++ Timer 사용하기 [Unreal/C++] Timer 사용하기타미어는 KismetSystemLibrary.h 에 구현되어 있다.헤더#include "Kismet/KismetSystemLibrary.h"중요한 것은 delegate를 이용할 함수들은 앞에 UFUNCTION()이 붙어있어야한다. 아래는 ChangeColor함수를 1초마다 실행하는 타이머를 설정한 것이다. 2023. 10. 28.
반응형