Unreal5 공부/TIL

2026/03/30 TIL

anna59 2026. 3. 30. 22:08

오늘의 목표

  • 아침 코드카타
  • 팀 프로젝트 <안식 없는 바다> 배틀 시스템 코드 완성

 

오늘 해낸 것

아이템 출력 수정

아이템을 획득 했을 때 획득한 아이템의 이름이 뜨도록 GameLogger를 통해서 로그를 출력했다.

 

//아이템 획득 로그 출력
GameLogger::getInstance().log(EventType::ObtainItem, player->getName(), obtainedItem->getName());
GameLogger::getInstance().printRecentLog();

 

<출력 결과>

 

아이템 밸런스 조정

랜덤으로 아이템을 얻는 시스템이 구현되어 있는 ItemFactory클래스에서 아이템들의 스탯 증가량을 초기화하고 있기 때문에 여기에서 초기화 값을 변경시켜서 밸런스를 조정했다. 

 

items.push_back(new HealthPotion("체력 포션", 1, 50, 1));
items.push_back(new MaxHpUp("방수가 잘 되어있는 초코과자", 1, 20 , 1));
items.push_back(new OxygenPotion("산소 포션", 1, 50 , 1));
items.push_back(new MaxOxygenUp("1000년 전의 스노클", 1, 20, 1));
items.push_back(new PressurePotion("압력 포션", 1, 50, 1));
items.push_back(new MaxPressureUp("어느 물고기의 부레", 1, 20, 1));
items.push_back(new AttackBoost("깨진 조개껍데기 목걸이", 1, 0.3 * GameManager::getInstance().getPlayer().getAttack(), 1));

 

 

 

 

아이템 인덱스 수정

Inventory 클래스에서 아이템 목록 출력 및 사용자 입력을 받아 선택 아이템 인덱스를 반환하는 selectItem 메서드에서 기존의 0부터 시작하는 인덱스가 아닌 1로 시작하는 인덱스를 사용하게 되면서 입력값과의 괴리가 생겼다. (목록에는 1로 출력되는데 0을 입력해야 올바르게 사용이 됨.)

그래서 기존의 InputSystem(min, max) (min부터 max까지의 입력을 받음)을 삭제하고 -1 (취소 선택) 혹은 1~(보유 아이템 개수) 까지의 입력을 받아서 반환하도록 변환시킴.

 

int selectItem() const {
	if (size_ == 0) {
		std::cout << "장비함이 비어있습니다.\n";
		return -1;
	}
	printAll();
	int choice;
	while (true) {
		std::cout << "사용할 아이템 번호 선택 (-1: 취소)\n";
		std::cin >> choice;

		if (std::cin.fail())
		{
			std::cin.clear();
			std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
			std::cout << "잘못 입력하였습니다.\n";
			std::cout << "다시 입력해주세요.\n";
			continue;
		}
		std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

		if (choice != -1 && choice < 1 || choice > size_) {
			std::cout << "잘못된 번호입니다. 다시 선택하세요.\n";
			continue;
		}
		else {
			break;
		}
	}

	if (choice == -1) {
		std::cout << "취소했습니다.\n";
		return -1;
	}

	return choice - 1;
}

 

<출력 결과>