본문 바로가기

Unity/Unity2D_TopDown

Unity2D-Top_Down - 게임관리UI(계속하기, 종료하기, 저장하기) 만들기

1. 게임관리UI - 계속하기 - 만들기

 (1). 계층구조 UI 오브젝트 생성하기

  - blackBack이라는 Image UI를 만들어 화면을 덮고 검정색으로 바꾼후 투명도를 주고

  - 그안에 Image와 Button UI로 아래처럼 만든다

 

 

(2). 게임매니져 스크립트 코드 작성

  - public으로 GameObject blackBack을 주고 해당 오브젝트를 드래그 앤 드랍한 후

  - esc를 눌렀을때 켜지고 꺼지는 기능을 구현

 *gameObject.activeSelf = 현재 자신이 활성화상태면 true, 비활성화상태면 false를 리턴

 

 

(3). 계속하기를 눌렀을때 blackBack UI 끄기

  - 계속하기 text가 포함된 Button UI Object를 클릭하고 속성 하단에 On Click()을 이용

  -  + 를 누르고 (none)object 칸에 blackBack Object를 드래그 앤 드랍

  - No function을 클릭하면 기본적으로 내장되어 있는 함수들이 있는데

  - 그중 GameObject의 SetActive(bool)을 선택하고 체크 해제된 상태(false)로 놔둔다

  - 이제 계속하기 버튼을 클릭하면 blackBack UI Object가 비활성화 되면서 이하 UI들이 모두 꺼진다

 

 

(4). 퀘스트 내용 갱신하기

  - QuestManigerScript에서 public Text questName; 변수를 만들고 위 예제그림의 계층구조에서 QeustData 아래에      있는 Text를 드래그 앤 드랍 한다

  - 로직에 맞게 퀘스트내용을 삽입하도록 코드 작성

 

 

 

2. 게임관리UI - 종료하기 - 만들기

*Application.Quit() 게임을 종료

 

 (1) . 코드구현

 - 종료하기 button 오브젝트 속성의 On Click()에 GameManiger 오브젝트를 드래그 앤 드랍하고 

 - GameManigerScript에 public ExitGame 함수를 생성

 - *Application.Quit()게임을 종료하도록 구현

 - On Click()의 Function을 위에서 구현한 ExitGame 함수선택

 

 

(2). 게임 빌드하여 종료하기 실험

 * 해당 종료하기 기능은 유니티엔진에서는 작용하지 않고 실제 게임을 빌드 했을때 작용한다

 - File -> Build Settings 

 - Add Open Scenes를 눌러 우리가 만든 게임의 Secene을 Scenes In Build 창에 올리고

 - Platform 을 PC, Mac & Linux Standalone로 두고 우측 Target Plarform등을 자신의 운영체제에 맞춘후

 - Bulid를 눌러 빌드를 진행한다

 - 빌드 결과로 .exe 프로그램이 생기고 실행하면 게임이 실행되며 종료하기 버튼을 눌르면 프로그램이 꺼진다

 

 

 

3. 게임관리UI - 저장하기 - 만들기

*PlayerPrefs : 간단한 데이터 저장을 지원하는 클래스

 

(1) - File - > Build Settings창에서 왼쪽 하단의 Player Settings를 누른다

    - Project Settings의 Player 창이 뜨면 Company Name과 Product Name을 써준다

    -이것은 이 후 게임을 저장할때 Company Name과 Product Name으로 레지스트리에 저장이 된다

 

 

(2) . 저장하기 및 불러오기 GameManigerScript 코드 작성

 

     - GameSave함수와 GameLoad함수 코드를 구현하고

     - GameSave함수는 UI의 저장하기 버튼을 눌렀을때 작동하도록 On Click()으로 작동로직을 짜고

     - GameLoad함수는 게임프로그램이 시작 될때 바로 실행되도록 GameManigerScript의 void Start()함수안의 넣어 

       작동로직을 짠다

    *PlayerPrefs.Set자료형("레지스트리에 저장할 이름", 저장할데이터) --> 데이터를 저장함

     PlayerPrefs.Get자료형("레지스트리에 저장된 이름")  --> 저장된 데이터가 리턴됨

     PlayerPrefs.HasKey("레지스트리에 저장된 이름")  --> 해당 이름의 자료가 저장되어 있는지 확인하여 bool값 리턴

 

 

(3). 저장 및 로드 확인

  - 이제 다시 빌드로 게임.exe를 만들고 실행 후 저장하기를 누르면

   레지스트리 아래의 폴더경로 위치에 데이터가 저장이된다

  - 게임을 종료하고 다시 시작하면 저장된 위치와 저장된 퀘스트id, Index값이 그대로 저장되어 있다!

  - 초기화하려면 레지스트리의 파일을 지운다!

 

 

 

 

*동전이 활성화 된상태에서 저장하고 다시 실행하면 동전이 사라지는 버그 발생

 

 -아래 드래그한 코드 추가로 버그 해결