본문 바로가기

Unreal/Udemy 강의

Unreal Engine 4 C++ The Ultimate Shooter Course Section 7-11

Reload Continued

이어서 리로딩에 대한 작업을 해주자.

먼저 기존 ShooterCharacter 클래스의 헤더에 있던 총알 유형에 대한 enum 클래스가 Weapon 클래스에서도 사용해야할 필요가 생겼다.

이에 아에 따로 헤더를 생성하여 거기에 총알 유형에 대한 enum 클래스를 선언해주자.

Weapon 클래스에서 ShooterCharacter 헤더를 포함시켜도 되긴하지만, 불필요한 내용까지 포함되므로 따로 만들어주자.

 

그리고 해당 헤더를 포함시켜주면 된다.

 

새로운 파일이 추가되었으므로 언리얼로 돌아가서 Refresh Visul Studio Code Project를 눌러주자.

언리얼에 해당 파일의 존재를 알려줌으로써 인텔리전스 오류가 사라진다.

 

이제 Weapon 클래스에서 해당 유형에대한 변수 선언 및 초기화를 해주자.

 

public 섹션에 getter 함수도 생성해주자.

 

이제 장착된 무기의 탄약 유형을 체크하고, 해당 유형의 탄약이 존재하는지 탄약맵을 통해 체크해주자.

 

이제 해당 함수를 기존의 ReloadWeapon() 함수에 호출해주자.

( ulog는 잠시 디버깅용으로 사용하였다.)

 

MotangeSection에 대해 탄약 유형 마다 다르게 설정할 것이다.

이에 변수를 따로 만들어주자.

 

웨폰 클래스에 선언했으므로 EquippedWeapon에 대해 유효여뷰를 체크해주는 항목을 추가해주자.

그리고 CombatState에 대해서도 장전중임을 알리는 ECS_Reloading으로 할당해주는 부분을 추가하자.

 

마지막으로 기존의 Section부분을 삭제하고 마지막에 섹션 이름을 넘기는 부분이다.

직접 적었던 하드코딩 부분을 삭제하고, Weapon 클래스에서 선언한 변수를 getter() 함수를 통해 호출해주자.