그냥 게임개발자

개발일지_006(UE4게임)블루프린트로 템플런 게임만들기6 본문

게임개발

개발일지_006(UE4게임)블루프린트로 템플런 게임만들기6

sudoju 2021. 12. 5. 14:33

Game Paused 화면에서 메인메뉴로 들어가는 UI를 만들기 직전까지 배웠다.

이제 우리가 해야 할 것은 메인메뉴를 만들 것이다.

일단 레벨을 만들어서 이름은 아무거나 괜찮은데 저는 MainMenu로 만들었다

 

만드신 후에 메인메뉴 위젯을 생성

이제 이미지 1개 버튼 2개 넣어주세요 이미지는 다 정리되어있으니

오..

자 이제 start버튼하고 exit버튼의 기능과 전에 만들었던 Leave버튼을눌렀을 때 이 레벨이 나오게 끔하자

Leave를 클릭했을 때 이벤트를 만들자.

MainMenu라는 레벨을 만들었다.

Leave버튼을 클릭했을 때 MainMenu라는 레벨을 불러온다.

Leave버튼 완성

자 이제 우리는 메인메뉴를 다시 작성해보자

앵커도 다 가운데로 잘 넣었으면 이제 기능을 넣어보자

역시 똑같이 눌렀을 때 이벤트를 발생하게 할겁니다

Start를 누르면 게임이 시작되고

다음 EXIT를 누르면 게임이 꺼지도록 해야 한다.

완벽

우리의 게임 레벨이름은 Endless_Runeer_Map으로 정했기 때문에 level name에 이렇게 적어주는 것이고 나가는건 콘솔명령어로 자체를 꺼준다.

이제 paused를 눌렀을 때 화면을 흐리게 하고싶습니다.

배경을 클릭하고 Blur를 5.0도 해주면 예쁘게 흐린효과가 적용이 됩니다.

우리가 이 UI를 봤을 때 블러가 적용이 애니메이션 효과로 적용하게 할 겁니다.

Construct이벤트를 이용해 애니메이션을 작성할 겁니다.

Construct 이벤트는 위젯이 생성될 때 딱 한번만 호출되게 하는 이벤트 역할을 합니다.

Play Animation을 실행시키구 그 애니메이션을 우리가 아까 적용한 Blur효과를 애니메이션에 적용시킨다.

이걸 GameOverUI에다가도 넣어준다.

이제 우리가 만들어야 할 건

최고점수 기능을 넣지 않았다..

게임을 하고 최고점수를 찍었으면 그 최고점수와 현재점수를 비교해서 현재점수가 최고점수보다 높으면 최고점수의 값을 다시 현재점수로 설정해주는 기능을 만들 것이다.

죽었을 때 그 저장한 점수를 현재점수랑 비교하는기능을 만들어야 한다.

DeathFuntion에 들어가서 이벤트를 만들자

우리의 DeathFunction의 기능들

여기다가 더 추가를 해줄 것이다.

우리는 CurrentPoints 즉 현재의 포인트를 사용하기 위해 ThirdPersonCharacter를 형변환 시킨다.

우리는 그럼 체크를 할 것입니다. 지금 우리가 SlotName에 HighscoreData라고 적어놓았는데 이 이름이 있는지 확인하는것이다.

그렇다면 이게 참이냐 거짓이냐로 나누어지는데 당연히 이 HighscoreData가 없으면 새로운 세이브게임을 만들면 되고 있으면 그 HighscoreData를 사용해야죠?

자 일단 없는 것부터 생각하고 만들겠습니다. False를 연결시켜 Create Save Game Object함수를 사용

즉 세이브게임 오브젝트를 생성하라는 뜻입니다.

오브젝트를 새로만들고 그것을 SaveGameToSlot에 넘기는 역할을 합니다.

그 클래스는 우리가 새로만들어줍시다.

아무거나 블루프린트로 EndlessSaveGame이라고 저는 만들어두었는데 아무렇게 적으셔도 됩니다.

하지만 그 블루프린트에는 변수를 새로 생성해줘야 합니다.

다시 돌아가서

Save Game 오브젝트 레퍼런스를 받는 액션이다.

그 액션을 변수로 승격한 후 그 이름을 우리는  SaverSubClass로 만든다.

 

우리는 LoadGamefromSlot에다가도 똑같이 설정해줄것입니다.

우리가 만든 EndlessSaveGame블루프린트를 형변환 시킬 겁니다.

왜냐하면 HighScoreValue를 사용하기 위함이죠.

자 우리는 일단 CreateSave에 있는 노드는 새로 Highscroe Value를 설정해주어야 하기 때문에 Set Highscore Value를 사용하면 되고 Loadsave에는 서로 비교한다.

HighscoreValue의 값과 CurrentPoints를  비교한다.

즉 최고의 점수와 현재포인트를 비교하는 거죠.

그 비교하는 기능이 >이렇게 써있는 노드입니다. 

A가 B보다 크면 true를 반환한다

A가 위에있는 숫자 B가 아래에있는 숫자

 왜냐하면 우리는 이것을 Loadgame에 사용할 것이기 때문입니다.

원래 최고의 점수가 있는데 현재의 점수가 더 높다?

 

이것을 참으로 설정해주고 HighscoreValue를 다시 currentPoints로 설정해주면 되는겁니다

 

이제 이것을 SaveGaemeto Slot에 저장하면 됩니다

Saver Sub Class의 오브젝트를 슬롯에 저장하면 된다

자 이제 이 텍스트 바인딩함수를

이런식으로 Load Game from Slot - 즉 세이브게임을 로드 HighscoreData를 로드하고 Highscore Value를 쓰기 위해 형변환시키고 ToText변환 시켜서 변환노드에 작성하면

오 잘나옴... 그럼이거를 게임 UI에다가도 적용하면?

이제 아이템만 추가하면 된다....

그럼 다음에 찡쿳~