ACK, 분반 수업, 선언/헤더관련 개인 질문, 분반 숙제


일단은 약간의 비효율이 포함되더라도 요구사항을 넘지 않는 사양으로 동작은 하는 코드이다. 제출한 코드는 아래와 같이 수정해서 기본 구현틀은 유지하면서 효율을 개선할 수 있다.
개선은 초록/파랑/주황 순서로 진행하면 된다.


month_days의 가장 마지막 31은 필요없다.(어차피 13월이 없기 때문)
뒤의 하드코딩처럼 필요한 수를 불러올 내용과 필요한 요일을 받아와서 바로 호출하는 방법이 가능하다.


====================
UMG(?)
//TODO_GEUKMIN
+ EXAM - 예시
+ DESC - 설명
아직 배우는 것도 raw포인터를 사용하게 배우지만 버전 5부터는 스마트 포인터를 사용하도록 권장된다.
RAII
전방 선언과 관련된 건 따로 찾아가서 물어보면 좋을 것 같다.
.IsA<>() - 앞의 내용이 뒤의 <>() 와 같은가?
.IsNull() => if ( A == nullptr)
upcasting
Item* item = new HealingPotion(); - 문제 없음
dynamic_cast
Downcasting - 문제 발생 확률이 있음.
dynamic_cast : 다운캐스팅 실패시 nullptr, 다운 캐스팅 성공시 실행
RTTI라는 녀석이 사용됨
RunTime Type Identifier - 엄청나게 느려짐
강한 참조 : GC에게 This 객체는 아직 살아 있어야 한다고 명확하게 알려주는 참조(하지만 destroy에는 죽는다)
dangling ptr
===
strong - weak (강 약이면 보통 이쪽)
- 포인터 자체의 개념
hard - soft (여기는 하드/소프트라고 부른다.)
리소스의 관점
hard 참조를 하고 있으면 리소스가 해제가 되지 않음.
soft 참조라면 리소스가 해제가 된다.
리소스 - 블루프린트, staticMesh 등
===
soft -
TSharedPtr<T> / TSharedRef<T>
Ptr <-> Ref는 서로 왔다 갔다 가 가능하다.
sharedptr - null체크를 먼저 하고 .pin()을 이용해서 사용한다.(코드 예시 참조)
move sementics(따로 알아 만 둘 것)
메세지 패턴
RAII
자원의 획득은 초기화로 하고 스코프를 나가면 자동으로 소멸하게 만드는 C++ 관례/패턴
UObject는 엔진에서 관리하기 때문에 RAII패턴이 아니다.
====================
전방 선언은 generated.h 아래에 내려도 상관없다.
#include generated.h 는 #include의 가장 마지막 이면 된다.
==========
분반 과제
파일로 관리하기 위해서는 블루프린트를 관리하듯이 해줘야 문제가 생기지 않는다.
1. Editor의 content Drawer에서 직접 폴더를 생성한다.
2. 생성한 C++파일들을 원하는 폴더로 이동한다.
Components/CapsuleComponent.h 는 Components폴더의 CapsuleComponent.h파일을 헤더로 가져온다는 선언이었다.
3. 위와 같이 퍼플릭 폴더를 기준 상대 경로로 include를 변경해줘야 한다.
이 데이터/로직은
“보여주는 용도(UI)인가?” - HUD
“플레이어의 상태인가?” - character
“조작/입력인가?” - input
“게임 전체 규칙인가?” -core
“레벨 단위 규칙인가?” - dungeon
흠.. 완전한 틀이라고 하기에는 하자가 있어 보이지만 참고할 거리는 있는 듯 하다.
Source/projectBasicA/
└── System/
├── Core/
│ ├── ProjectBasicA.h
│ ├── ProjectBasicAGameMode.h
│ ├── ProjectBasicAGameState.h
│ └── ProjectBasicAGameInstance.h
│
├── Player/
│ ├── ProjectBasicAPlayerController.h
│ ├── ProjectBasucAPlayerState.h
│ └── ProjectBasicACharacter.h
│
├── UI/
│ ├── ProjectNameHUD.h
│ ├── Widget/
│ │ ├── SkillBarWidget.h
│ │ ├── InventoryWidget.h
│ │ └── ClearResultWidget.h
│
├── Skill/
│ ├── SkillBase.h
│ ├── SkillComponent.h
│ └── SkillData.h
│
├── Inventory/
│ ├── InventoryComponent.h
│ ├── ItemBase.h
│ └── ItemData.h
│
└── Dungeon/
├── ChaosDungeonManager.h
├── MonsterSpawner.h
└── PortalActor.h
이 내용을 기본 틀로 생각하고 살을 좀 추가한뒤 선언부만구현해보면 될 것 같다.
.
'TIL' 카테고리의 다른 글
| 26.01.28일자 - TIL (1) | 2026.01.28 |
|---|---|
| 26.01.27일자 - TIL (0) | 2026.01.27 |
| 26.01.23일자 - TIL (0) | 2026.01.23 |
| 26.01.22일자 - TIL (1) | 2026.01.22 |
| 26.01.21일자 - TIL (1) | 2026.01.21 |