본문 바로가기
개발자가 되어보자..공부공부/개발 일지

C# 유니티 공부 13 - 탑다운 게임 완성 (메뉴 버튼 UI, 게임 저장과 불러오기, Canvers Scaler, 안드로이드 빌드)

by 묭묭이와소담이 2022. 12. 13.
반응형

1. ESC키 눌렀을 때, 메뉴 나오게 하기.
1) ESC 눌렀을 때, 화면 어둡게 하기.

 

- 캔버스에 이미지 추가.. 검정색으로 하고 투명도(알파 값) 조정.
2) 버튼 만들기
- 검정색 만든 이미지!!! 내부에다가 이미지 생성.
- 이미지 내부에 버튼 추가로 생성!
3) 버튼 온클릭... 
- 따로 함수를 작성할 필요 없이... 할 수 있음.
게임매니저에서 메뉴셋스크립트를 넣었고, 메뉴셋을 온클릭에 가져다 놓으면
다양한 함수 사용 가능. 
여기서는 SetAcitve 함수 사용하면 바로 가능.
(혹시 버튼이 클릭 안 될 때는... eventsystem이 Hierachy에 있나 확인.
없으면 UI에서 추가해주면 됨.)

4) 퀘스트 내용 기재

5) 응용프로그램 종료 함수.
Application.Quit();

6) 게임 저장, 로드

게임 저장하면 저장해야할 데이터 변수들을 먼저 생각한다.

    public void GameSave()
    {
        PlayerPrefs.SetFloat("PlayerX", Player.transform.position.x);
        PlayerPrefs.SetFloat("PlayerY", Player.transform.position.y);
        PlayerPrefs.SetInt("QuestID", questManager.questId);
        PlayerPrefs.SetInt("QuestActionIndex", questManager.questActionIndex);
        PlayerPrefs.Save();

        ManuSet.SetActive(false);
    }
    public void GameLoad()
    {
        if (PlayerPrefs.HasKey("PlayerX"))     // 만약 플레이어가 저장된 게 없다면... 
            return;        // 게임 로드함수는 진행시키지 마!!!

        float x = PlayerPrefs.GetFloat("PlayerX");
        float y = PlayerPrefs.GetFloat("PlayerY");
        int questId = PlayerPrefs.GetInt("QuestID");
        int questActionIndex = PlayerPrefs.GetInt("QuestActionIndex");

        Player.transform.position = new Vector3(x, y, 0);
        questManager.questId = questId;
        questManager.questActionIndex = questActionIndex;
    }


  public void GameExit()
    { 
        Application.Quit();     // 응용프로그램 종료 함수.
    }

-> key 오류
null 오류
여러 오류가 발생했는데.. 해결되지 않았다.

유니티를 재시작했더니 해결되었다.



-------------------------------------------------------------------

* UI 버튼... 모바일 구동.

- 모바일 방향키 등 버튼 만들어주고
- 모바일 해상도 적용. 요즘은 대체로 9:19 사용
- 카메라 조정.

1) 방향키
- Switch 구문 활용
- 버튼 OnClick은 버튼다운, 버튼업이 하나의 구성..
버튼 하나에 버튼 다운과 버튼 업을 같이 부여해야 하는데?? 그렇다면?
-> 따로 줄 수 있음.

Event Trigger 컴포넌트 추가.
여기서 PonterDown, PointreUp 을 추가하면 됨!

- 버튼 입력을 받을 변수 12개 생성 (값+Down+Up)x4
(버튼을 눌렀을 때, 그리고 떼엇을 때에만 true로 처리하고 나머지는 false로 처리하는 것.)

* 모바일 구동
- build settiong에서 안드로이드로 스위치 플랫폼 시키기.
- 플레이어 셋팅 -> Resolution and presentation -> Allowd orientations for auto rotation
이건 스마트폰을 가로로 돌렸을 때, 자동으로 세로, 가로 화면 전환되는 것을 의미.
LandScape를 체크해제하면 가로로 화면이 돌아가지 않음.
혹은 위에 default orientation에서 고정으로 해도됨.

- 구글플레이에 2019.08 부터 64비트 이상만 올릴 수 있음.
(scripting Backend 를 IL2CPP로 바꾸고 x86(32비트) 체크표시 해제
ARMv7, ARM64 는 꼭 체크표시)

* UI Canvas Scaler 셋팅 
Canvas 의 Canvas Scaler에서 모드를  Scale With Screen Size로 바꾸시고
1200 x 1920 으로 맞추시면 UI가 해상도 크기에 따라 적절하게 늘어나거나 줄어듭니다.

-> 첫 작업에 해두어야 하는 듯..? 조정이 잘 되지 않는다. 핸드폰 빌드 시, UI가 매우 작아졌다.

 


 

좌: PC, Mobile 이동 코드 따로.   우:PC,Mobile 이동 코드 한 번에.
좌: PC, Mobile 이동 코드 따로.   우:PC,Mobile 이동 코드 한 번에. (★ 마지막 줄 up_up, down_up이 되어야 함... 오타)

★ 위 사진 처럼 하면, 타블렛 등 모바일 운영체제에 블루투스 키보드를 사용하는 등.. 코딩이 간편해진다.

 

ObjectData.pdf
0.02MB
Player.pdf
0.06MB
QuestData.pdf
0.02MB
QuestManager.pdf
0.04MB
TalkManger.pdf
0.07MB
Typing.pdf
0.05MB

반응형

댓글