본문 바로가기
언리얼 최고/언리얼 멀티플레이

언리얼 엔진(UE4)--세이브 게임/플레이어옵션ui / 멀티플레이 튜토리얼((8~10)/24)

by Lee_story_.. 2022. 5. 12.
728x90

 


8장! 에서는 기본적인 ui디자인을 해주는 영상이라서 

 

 

 

영상에서는 이렇게 캐릭터 옵션창을 만들어 주었지만 

 

 

저는 따로 버튼식으로 만들어 주었습니다!

그래도 ui그래프에서 그렇게 달라지진 않네요

 

옵션 ui는 만들고 싶은대로 만들어 주세요!

 

 


그럼 이제 9장! 여기가 중요한것 같네요

 

이 장에서는 플레이어 세이브라는 클래스를 사용합니다.

 

플레이어 세이브는 말그대로 플레이어에 저장될값 게임이 종료되어도 저장되게끔 해주는 클래스!

 

 

플레이어 세이브에 관련됨 함수들을 사용하여 실행하면

프로젝트 파일 내부에 저장 파일이 생기고 나중에 켜질때도 불러올수 있게 해줍니다!!

(튜토리얼이라 그렇게 중요한 용도로 사용하진 않는것 같은데 매우 중요한 내용인것 같습니다.)

좀 헤매긴 했는데 그렇게 어렵진 않았습니다!

 

 

 

시작!

이제 부터는 게임 실행시 세이브파일이 있는지에 따라 ui를 다르게 띄워줄거라서

게임 인스턴스에 가서 ui를 띄워줄 새로운 커스텀 이벤트를 만들어 줍시다.

 

does save game exist가 세이브파일이 있는지 확인해줄겁니다.

만약 있다면 바로 메인으로, 없다면 option부터 먼저 지정하게 뜰거에요!

 

그리고 메인메뉴 레벨프린트로 가서 시작 이벤트를 위의 커스텀 이벤트로 변경!

 

이제 8장에서 만들어둔 option ui를 구성해줍시다.

 

제일 먼저 option이 눌려졌을때

 

 

instance를 불러주고 (이제는 익숙;;)

save gamecheck라는 함수 하나 선언!

---> 여기서 세이브파일 유무를 판단해 새이브게임 할껀지 불러올껀지 결정!

 

 load game from slot으로 데이터를 찾은뒤 ui변수 playerinfo에 저장!

 

save gamecheck 에서 데이터가 없다! 라면 데이터를 저장해야겠죠

--> 데이터를저장하는 부분!

그리고 불러온 내용을 player info에 저장해주는 역할!

 

 

그다음은 start버튼 클릭시 데이터가 저장되고 메인메뉴로 넘어가게 만드는 부분

(player info는 플레이어구조체..!)

 

그외 잡다한 이벤트들

 

여기서 empty name체크는 이름이 있는지 없는지만 확인하는거..!

이름을 입력하지않았다면 start 버튼을 못누르게 구성합니다.

 

 

마지막으로

세이브 파일이 없을때만 문구가 나오게

변수 하나 선언!

함수를 하나 만들어 줍시다.

그리고 문구의 visible에 변수 바인딩

 

마찬가지로 세이브파일이 있다면 칸을 채워줘야하니 이름칸과 스킨이름칸을 변수로 바인딩!

여기까지했다면 잘 넘어 갈꺼에요!

 

안된다면??

1. ui의 PlayerSettingSave변수와 게임 인스턴스의 PlayerSettingSave변수명이 같은지 확인..!(이거때메 전.... 헤맷네요)

 

2. 이건 영상 마지막에 왜안되지?? 하더니 다음장에서 알려주더라구요

 

ui변수에서 기본값 hidden 설정

인스턴스 옵션 커스텀이벤트에서 저 뒤에 부분 만들어주기!

여기까지가 진짜 끝

 

실행해보시면 옵션창부터 뜨실꺼에요

 

설정해주고 게임을 끄고 다시켜보세요!

 

바로 메인창으로!! 설정값도 유지되어있는것을 볼수있습니다.

 

세이브파일은  Unreal Projects\프로젝트이름\Saved\SaveGames 에 있으니 지우고 한번 다시 해보세요

 

옵션창부터 시작할수있습니다!

 

8장 끝!

 

세이브파일을 어떻게 사용하는지 어디에 사용하는지에 대해 알게된것 같네요 ㅎㅎ

 


9장....은 서버메뉴 만들기 ㅋㅋ

이 장에서는 좀 신기했던게

 

위젯스위처 라는 래핑? 이있더라구요

 

그래서 이제 왔다 갔다 할수있게 이런것도있네요...(역시초보..)

 

하나 배웠네요 ㅎ

 

9장은 알아서 구성하면 될것 같습니다!

 

끝!

 

 

틀린 점이 있다면 댓 달아주세요!

 

 

댓글