개발자가 되어보자..공부공부/개발 일지

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

소담토리 2022. 12. 13. 21:58
반응형

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

반응형