컴퓨터 구조 3주차
·
학교수업
CPU 기능 1. 명령어 인출 : 기억장치로부터 명령어를 읽어옴 2. 명령어 해독 : 수행 할 동작을 결정하기 위해 명령어 해독함 -> 모든 명령어들에 대하여 공통적으로 수행 3. 데이터 인출 4. 데이터 처리 5. 데이터 저장 -> 명령어에 따라 필요한 경우에만 수행 CPU 기본 구조 1. 산술논리연산장치 : 산술 연산, 논리 연산 수행하는 회로로 이루어진 하드웨어 모듈 2. 레지스터 세트 : 엑세스 속도가 가장 빠른 기억장치, CPU 내부 포함할 수 있는 레지스터들의 수가 제한됨 3. 제어 유니트(제어 장치) : 명령어 해석 후 실행을 위한 제어 신호를 순차적 발생 4. CPU 내부 버스 : ALU와 레지스터들 간의 데이터 이동을 위한 데이터 선과 제어 유니트로부터 발생되는 제어 신호 선들로 구성된 ..
액터는 컴포넌트가 없이 사용이 가능한가??
·
Unreal Engine 4/Unreal Engine 4
컴포넌트 없는 액터는 위치가 존재하지 않기 때문에 다른 액터에 연결이 될 수 없다. 루트 컴포넌트가 없으면 액터는 기본 트랜스폼(transform)이 존재 하지 않기에 위치가 없다. -> 대부분 액터는 최소 하나 이상의 컴포넌트가 유용해야 한다. UPROPERTY() 매크로를 사용하면 포인터에 선언된 오브젝트가 참조된 것으로 간주 -> 가비지 컬렉션에서 제외 ex) UPROPERTY() UStaticMeshComponent* Mesh; 생성자에서의 템플릿 함수 template TReturnType * CreateDefaultSubobject (FName SubObjectName, bool bTransient = false) 위 함수를 통해 포인터 초기화
SetLifeSpan을 이용한 일정 시간 후 액터 삭제
·
Unreal Engine 4/Unreal Engine 4
BeginPlay나 호출할 수 있는 함수에 SetLifeSpan(N);을 사용하면 N초 후에 오브젝트는 파괴된다. SetLifeSpan은 초 단위로 시간을 설정 해야 한다.
Destroy와 Timer를 사용한 액터 삭제
·
Unreal Engine 4/Unreal Engine 4
BeginPlay 함수 끝에 FTimerHandle Timer; GetWorldTimerManager().SetTimer(Timer,this,&AUECookbookGameModeBase::DestroyActorFunction,10); 이 후 DestoryActorFunction을 구현한다. void AUECookbookGameModeBase::DestroyActorFunction() { if(SpawnActor!=nullptr) { SpawnActor->Destroy(); } }
UPROPERTY()와 언리얼의 가비지 컬렉션 시스템
·
Unreal Engine 4/Unreal Engine 4
UCLASS()의 멤버로 UPROPERTY()같은 오브젝트가 있을 때, 해당 멤버를 UPROPERTY()로 선언해야 한다. 블루프린트 내에도 편집하지 않을 때도 마찬가지다. -> 만약, 하지 않으면 TArrray는 제대로 할당되지 않는다. ex) TArray Greets; 보통 강제로 가비지 컬렉션을 수행할 일은 별로 없지만, 더 이상 사용하지 않는 매우 큰 텍스처가 있다면 수행을 검토할 수 있다. 방법 : 메모리에서 해제하고 싶은 모든 UObject에 대해 간단히 CoditionalBeginDestory()를 호출하거나 참조 카운트를 0으로 변경한다. GetWorld()->ForceGarbageCollection(true); 중단점과 단계별 코드 실행 break point사용 방법 ->Visual st..
TScopedPointer
·
Unreal Engine 4/Unreal Engine 4
범위 포인터는 선언된 블록의 끝에서 자동 삭제되는 포인터다. 범위는 첫 번째 닫기 괄호가 나타날 때까지 지속된다. ex) { int x; { int y; } // y의 범위 } // x의 범위 범위 포인터는 사용 기간 동안 참조 카운트 오브젝트(대상은 범위 밖으로 나갈 위험이 있는 오브젝트)를 유지하는 것이 중요할 때 유용하다. ex) TScopedPointer warrior(this); TScopedPointer 변수 타입은 참조 카운트를 자동으로 추가하며, 이를 통해 범위 포인터의 수명 동안 기본 오브젝트의 할당이 해제되지 않는다.