본문 바로가기

전체 글462

[Unreal] Player Controller vs Pawn Player Controller과 Pawn의 구분 이유? Player Controller은 기본 동작을 조작할 때 쓰고, Pawn은 캐릭터의 고유 기능을 넣을 때 쓴다. 철권을 예로 들면, 기본 공격 동작(펀치, 킥)들은 같으니 Player Controller에서 적용하고, 캐릭터 별 스킬, 콤보 등 고유 기능은 Pawn에 넣는 셈 Pawn은 꼭두각시라고 생각하면 된다 2024. 4. 12.
[Unreal] 값,참조,포인터/ 인스턴스 / 구조체 vs 클래스 값 vs 참조 vs 포인터 데이터를 어떻게 저장, 전달, 관리할지 결정 값(Value) 데이터의 실제 내용 ex. 숫자 10이나 문자 'A'는 모두 값 참조(Reference) vs 포인터(Pointer) 둘 다 메모리의 주소 가리킴 차이점은 안전한지(레퍼런스), 안 안전한지(포인터)임 레퍼런스는 별명을 붙여주는것이기 때문에 null 안되고, 초깃값이 반드시 있어야함. 한번 별명 붙여주면 초기화도 안됨 포인터는 언제 어디서든 초기화가 가능함 인스턴스 인스턴스(Instance) (힙)메모리에 로딩된 상태 원래 코드(클래스)로 있다가, 메모리에 로딩되기 시작하면 그게 인스턴스! 인스턴스는 속성과 메서드를 포함함 메모리에 할당되어 실행시간(Runtime에 사용) ㄴ Unreal Engine 5에서는 대부분의 .. 2024. 4. 5.
[Unreal] Actor/Component, 레이트레이싱-콜리전체크 액터 주체, 씬에 올리는 애들 컴포넌트 액터들을 구성하는 구성요소 1) 액터 컴포넌트 Transform 없이 기능만 하는 애들 ex. 특정 기능만 하고 싶을 때 ex. InputComponent, AIComponent 2) 씬 컴포넌트 Transform 있는 애들. 어딘가에 존재하게 할 수 있음 ex. CameraComponent, AudioComponent (시각적 요소는 없지만 위치가 중요함) 3) 프리미티브 컴포넌트 시각적 요소를 가진 게임 오브젝트 ex. 메시, 라이트, 파티클.. 프리미티브 컴포넌트는 충돌 감지와 물리 시뮬레이션을 지원함. 따라서 물리적 상호작용이 필요한 오브젝트에 주로 사용됨 ex. StaticMeshComponent, SkeletalMeshComponent, ParticleS.. 2024. 3. 6.
[Unreal] Lightmap, Lightmass가 뭐지? 라이트 편집 및 라이트맵 생성 | Epic Developer Community (epicgames.com) 라이트 편집 및 라이트맵 생성 | Tutorial 이 단원에서는 디테일 패널에서 라이트를 편집해 봅니다. 그리고 라이트맵이 무엇인지, 이를 어떻게 언리얼 엔진에서 생성 및 편집하는지 학습합니다. dev.epicgames.com 이거 설정에서 한국어 자막 키고 보기 Lightmap 언리얼 엔진에서 Lightmap은 정적인 조명과 그림자 정보를 3D 모델의 표면에 저장하는 방법입니다. Lightmap을 사용함으로써, 언리얼 엔진은 복잡한 조명 계산을 실시간으로 수행할 필요 없이, 미리 계산된 조명과 그림자를 빠르고 효율적으로 렌더링할 수 있습니다. Lightmap의 핵심 개념과 사용 방법은 다음과 같습.. 2024. 1. 26.
언리얼 블루프린트 디버깅(콜스택확인) - 콜스택보기 Debug - Blueprint Debugger 1. F9 눌러서 확인할 곳 체크 후 플레이 한다음에 2. 블루프린트 디버거 확인 내가 어떻게 여기까지 왔는지 보여주는 개념 3. 더블클릭하면 그래프들도 같이 이동해서 보여줌 4. 아이콘 혹은 F10, F11 이용해서 디테일하게 확인 5. Breakpoints 목록 볼 수 있음 2024. 1. 23.
Effective C++ 항목 2 : #define을 쓰려거든 const, enum, inline을 떠올리자 선행 처리자보다 컴파일러를 더 가까이 하자 #define 은 선행처리 해버리기 때문에 컴파일러가 알 수 없다. #define Angle 1.653 이러면 에러 메세지에 Angle 대신 1.653만 나옴 (찾기 어려움) 대신 const를 사용한다. const double angle = 1.653; 나열자 둔갑술 (enum hack) 메모리 할당이 싫고, 해당 객체에서만 사용하게 하고 싶다. class GamePlayer { private: enum { NumTurns = 5 }; int scores[NumTurns]; ... } 표준에 어긋난 구식 방법이지만 유용함 매크로의 단점 선행 처리 하기 때문에 오용될 수 있음 #define CALL_WITH_MAX (a, b) f((a) > (b) ? (a) : .. 2023. 12. 12.