2025/12/30 6

블루프린트의 Construction Script(CS) 노드와 SCS

1. SCS vs Construction Script (CS)구분SCS (Simple Construction Script)Construction Script (블루프린트 노드)정체컴포넌트 구조의 데이터(설계도)컴포넌트 생성 후 실행되는 로직(함수)하는 일"이 액터는 메쉬 1개, 라이트 1개가 있다""메쉬의 색상을 랜덤하게 바꾸고, 라이트 밝기를 조절해라"실행 시점액터 생성 직후, 컴포넌트 탄생 단계SCS가 컴포넌트 조립을 마친 직후편집 방법컴포넌트 패널에서 마우스 드래그그래프 에디터에서 노드 연결2. 데이터의 흐름 (생성 순서)액터가 월드에 배치되거나 스폰될 때, 데이터는 다음과 같은 순서로 흐릅니다.SCS 단계 (정적 구성): 에디터에서 미리 붙여둔 컴포넌트들이 실제 메모리에 할당됩니다.이때 변수들은 ..

Unreal Engine SCS(Simple Construction Script)

언리얼 엔진에서 SCS(Simple Construction Script)는 우리가 블루프린트 에디터의 '컴포넌트(Components)' 패널에서 컴포넌트를 추가하고, 계층 구조를 잡고, 설정을 변경하는 모든 시각적 작업을 코드로 관리하는 시스템입니다.쉽게 말해, "블루프린트에서 마우스로 컴포넌트를 조립한 내역을 담고 있는 청사진"이라고 정의할 수 있습니다.1. SCS의 핵심 역할우리가 블루프린트 에디터에서 StaticMesh를 추가하고 SceneComponent 아래에 배치하면, 엔진 내부적으로는 다음과 같은 일이 일어납니다.계층 구조 저장: 어떤 컴포넌트가 부모이고 자식인지에 대한 정보를 저장합니다.프로퍼티 기록: 컴포넌트의 위치(Transform), 할당된 메쉬, 라이트 강도 등의 수정 사항을 기록합..

Unreal Engine CDO 사용 방법

1. 코드에서 CDO에 접근하는 방법실행 시간에 특정 클래스의 기본값을 가져오고 싶을 때, 액터를 스폰(SpawnActor)하지 않고도 아래의 함수들을 사용하여 CDO에 접근할 수 있습니다.GetDefault() 사용 (가장 권장됨)템플릿 기반으로 작성되어 가독성이 좋고 안전합니다.// AMyWeapon 클래스의 CDO에서 기본 데미지 값을 가져오기AMyWeapon* DefaultWeapon = GetDefault();float Damage = DefaultWeapon->BaseDamage;// 클래스 변수(UClass*)가 있을 때UClass* WeaponClass = AMyWeapon::StaticClass();const AMyWeapon* DefaultObj = GetDefault(WeaponCla..

Unreal Engine CDO 사용 이유

언리얼 엔진에서 CDO(Class Default Object)는 클래스당 딱 하나씩 존재하는 '원본 마스터 객체'입니다. 엔진이 초기화될 때 각 클래스의 생성자를 호출하여 이 객체를 메모리에 미리 만들어 둡니다.단순히 "기본값 저장소" 이상의 의미를 갖는데, CDO를 사용하는 핵심적인 이유 4가지는 다음과 같습니다.1. 메모리와 성능 최적화 (Template Role)새로운 액터나 오브젝트를 스폰할 때, 맨땅에서 모든 변수를 초기화하는 것은 비효율적입니다.동작 방식: 엔진은 CDO라는 완성된 '복사본'을 미리 가지고 있다가, 새로운 인스턴스가 생성되면 CDO의 메모리 상태를 그대로 복사(Serialization)해서 넘겨줍니다.이점: 복잡한 생성 로직을 매번 실행할 필요 없이 메모리 복사만으로 빠르게 객..

unreal engine assertion들 check, ensure, verify 등등...

1. check(조건)가장 강력하고 엄격한 어설션입니다.동작: 조건이 거짓이면 게임을 즉시 중단(Crash)시키고 로그를 남깁니다.특징: Shipping 빌드(배포판)에서는 코드 자체가 삭제됩니다. 즉, 개발 단계에서만 동작하며 릴리즈된 게임의 성능에는 영향을 주지 않습니다.사용 예시: "이 포인터는 여기서 절대 null일 수 없다"고 확신할 때 사용합니다.check(MeshComponent != nullptr);MeshComponent->SetVisibility(true); // 만약 null이었다면 위에서 이미 멈췄을 것2. ensure(조건)조금 더 유연한 어설션입니다.동작: 조건이 거짓이면 콜스택(Call Stack)을 로그에 출력하지만, 게임은 멈추지 않고 계속 실행됩니다. (에디터에서는 한 번..

TObjectPtr를 사용하는 이유

언리얼 엔진 5(UE5)에서 도입된 TObjectPtr은 기존의 Raw Pointer(C++ 기본 포인터, 예: UObject*)를 대체하기 위해 설계된 엔진 전용 스마트 포인터 시스템입니다.단순히 주소를 가리키는 것을 넘어, 에디터 환경과 메모리 관리 효율을 위해 도입되었습니다. 주요 사용 이유 4가지는 다음과 같습니다. 1. 지연 로딩 (Lazy Loading) 및 성능 최적화가장 큰 기술적 이유는 에디터 빌드에서 오브젝트를 실제로 필요할 때까지 로드하지 않기 위해서입니다.Raw Pointer: 포인터 변수가 선언되어 있으면 해당 오브젝트를 즉시 메모리에 올려야 할 때가 많습니다.TObjectPtr: 에디터 환경에서 해당 객체가 실제로 접근(Access)되기 전까지는 로딩을 지연시키거나, 경로 정보만..

반응형