분류 전체보기

    [Unreal] FTimerManager 타이머 설정

    #include "TimerManager.h"를 추가해주면 된다. 생성자가 FTimerManager() = delete;로 되어있기 때문에 인스턴스화 시킬 수 없다. 각 인자 값으론 FTimerHandle 쓰여질 핸들 InRate 반복될 횟수 inbLoop 무한반복 여부 InFirstDelay 첫 발동까지 대기시간 const FTimerDelegate&, const FTimerDynamicDelegate&, TFunction&& 함수 포인터 UserClass* 타이머를 적용할 대상 오브젝트 FTimerHandle handle; float rate = 1.f; float inFirstDelay = 0.f; bool bLoop = false; FTimerDelegate timerDele; FTimerDyna..

    [Unreal] 화면 정중앙 조준선 위치 기반 레이캐스트

    FVector startPos = 소환위치(FVector); float maxRange = 10000.f; // 카메라 기반으로 구하기 auto cameraManager = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0); auto traceStartPos = UKismetMathLibrary::ProjectPointOnToPlane(cameraManager->GetCameraLocation(), startPos, cameraManager->GetActorForwardVector()); auto traceEndPos = traceStartPos + (cameraManager->GetActorForwardVector() * maxRange); // 게임 ..

    [Unreal] 문자열 변환 - FName, FText, FString

    문자열 클래스간 변환 변환 형식 변환 방법 FName → FString TestString = TestName.ToString(); FName → FText TestText = FText::FromName(TestName); FString → FName TestName = FName(*TestString); // 손실 위험 있음. FName이 대소문자 구분 없음 FString → FText TestText = FText::FromString(TestString); FText → FString TestString = TestText.ToString(); // 안전하지 않음. 언어 변환시 손실 위험 때문 FText → FName FText → FString -> FName // 직접 변환 없음 // 손실 위..

    [Unreal] FVector과 FRotator간 변환

    // FVector > FRotator FRotator::MakeFromEuler(FVector); FVector 변수.Rotation(); // FRotator > FVector FRotator 변수.Vector();

    CPU 32비트 64비트와 두 프로그램의 차이

    CPU 32비트와 64비트 차이 컴퓨터에는 32비트, 64비트 두 가지 유형의 프로세서가 존재한다. 이것은 컴퓨터 프로세서가 CPU 레지스터에 전달할 수 있는 메모리의 양이다. 즉 32비트보다 64비트 프로세서가 데이터 처리량이 높기 때문에 더 우수한 성능을 보여준다. 32비트 232개의 메모리 주소, 즉 4GB((4,294,967,296바이트) 정도의 물리 메모리(RAM)에 전달할 수 있다. 64비트 264개의 메모리 주소, 실제로 18GB (18,446,744,073,709,551,616)바이트 또는 17,179,869,184GB(16EB) 정도의 물리 메모리(RAM)에 전달할 수 있다. 듀얼 코어, 쿼드 코어, 6 코어, 8 코어 버전의 홈 컴퓨팅으로 제공될 수 있다. 속도 향상. 멀티태스킹에서 많..

    C++ 얕은 복사 깊은 복사 (Shallow/Deep Copy)

    아래와 같이 코드를 작성하면 a1 객체와 a2 객체가 서로 같은 int형에 대한 포인터 변수를 공유하기 때문에 이미 해제된걸 재해제 하기 때문이다. #include using namespace std; class A { int* ptr = nullptr; public: A() { ptr = new int(); } A(const A& Ref) { this->ptr = Ref.ptr; } ~A() { delete ptr; } }; int main() { // 기본 생성자 호출 A a1; // 복사 생성자 호출 A a2(a1); } 이를 해결하기 위해선 ptr를 참조 대상값 가지고서 재 할당 해줘야한다. #include using namespace std; class A { int* ptr = nullptr;..

    C++ 임시 객체 (Temporary Object)

    임시 객체를 r-value로 알고있는데 이는 틀렸다, 임시 객체 또한 const&로 파라미터로 넘길 수가 있다. r-value move semantics #include using namespace std; class Vector { public: float x = 0, y = 0, z = 0; public: Vector(float Val) : x(Val),y(Val),z(Val) { } static float Length(const Vector& Vec) { return Vec.x + Vec.y + Vec.z; } }; int main() { cout

    C# 부모 클래스 함수 호출과 오버라이딩 (base / override)

    개념 부모 클래스 내 함수를 자식 클래스 재정의 하는 것이며 C++하곤 살짝 다른 개념이다 기본적으로 룰이 존재하는데. 1. 절대로 private이면 안된다. 2. C++과 다르게 같은 함수명을 적어도 컴파일러는 알아채질 못한다. using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace ConsoleApplication1 { public class Parent { int mVal = 0; public int ValProp { get { return mVal; } set { mVal = value; } } public Parent() { this.mVal = 10; Console.WriteLi..

    C++ 부모 클래스 함수 호출과 오버라이딩 (override)

    오버라이딩 핵심 개념 오버라이딩은 부모 클래스에서 정의한걸 재정의 하는 것이다. 추상클래스 (순수 가상 함수) 참조 아래와 같이 부모 클래스에선 virtual 키워드를 붙여준 뒤 함수를 정의하고 자식 클래스에서 재정의 하는 것이다. virtual로 시작 (생략 가능) 그리고 마지막엔 override 붙일 수가 있다. (이것 또한 생략 가능) #include using namespace std; class Parent { int mVal = 0; public: virtual void Fn1() { } virtual void Fn2() { } virtual void Fn3() { } virtual void Fn4() = 0; }; class Child : public Parent { public: void ..

    C# 자기 자신 참조 (this) / 위임 생성자 (delegating constructor)

    C#은 C++과 다르게 위임 생성자 호출 시 부모 클래스 또는 자기 클래스 명칭을 사용하지 않는다. 아래와 같이 하면 에러가 뜬다. using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace ConsoleApplication1 { public class Test { int mVal = 0; public int ValProp { get { return mVal; } set { mVal = value; } } public Test() { Console.WriteLine("기본 생성자"); } public Test(int Val) : Test() { ValProp = Val; Console.Writ..