기존에 강의영상(2+)에서 추가했던 input system을 이용한다.
Package Manager > Input System의 Sample 탭에서 On-Screen Controls를 임포트 해준다.
이제 캔버스 안에 이미지 오브젝트를 하나 만든다.
이후에 Joy 오브젝트 안으로 아까 임포트해서 생긴 폴더의 스틱을 자식 오브젝트로 끌어다 놓는다.
플레이어 오브젝트의 Player Input 컴포넌트의 속성을 아래와 같이 설정한다.
Auto-Switch는 입력에 따라 Input을 결정하는데 마우스로 조이스틱을 드래그해서 사용하면 마우스와 조이스틱을 자동으로 왔다갔다 하느라 움직임이 부자연스럽게 작동한다.
이제 게임이 시작하면 조이스틱이 보이도록 초기 조이 오브젝트의 스케일을 0,0,0으로 수정한 후 게임 매니저 스크립트에서 조이스틱 변수를 선언해준 후 인스펙터로 초기화 해준다.
조이스틱의 스케일은 stop 함수와 resume 함수에서 제어해준다.
public Transform uiJoy; //조이스틱 오브젝트
public void Stop()
{
isLive = false;
Time.timeScale = 0; //유니티의 시간 속도(배율)
uiJoy.localScale = Vector3.zero; //조이스틱 숨기기
}
public void Resume()
{
isLive = true;
Time.timeScale = 1; //유니티의 시간 속도(배율)
uiJoy.localScale = Vector3.one; //조이스틱 보여주기
}
게임 스타트 오브젝트 아래에 종료 버튼을 만들기 위해 버튼 오브젝트를 스타트 오브젝트 안에 추가해준 후 아래와 같이 설정한다.
자식 오브젝트 Text는 다음과 같이 설정
이제 게임 매니저에 종료 버튼의 기능을 담당하는 함수를 추가해준다.
public void GameQuit()
{
Application.Quit();
}
이제 버튼의 OnClick 이벤트에 게임 매니저를 드래그드랍해서 GameQuit 함수를 실행하도록 설정한다.
Application.Quit 함수는 빌드 버전에서만 작동
- 에디터를 종료하는 기능이 아니기 때문에 테스트 중에는 종료 기능이 작동 X
Edit > Project Settings > Quality 탭에서 아래와 같이 설정한다.
게임 매니저의 Awake 함수를 다음과 같이 수정해 프레임을 60으로 만들어준다. 만약 프레임을 지정해주지 않으면 30까지 떨어진다.
void Awake()
{
//static은 인스턴스에 나오지 않으므로 초기화 해줘야함
Instance = this;
Application.targetFrameRate = 60;
}
게임 창에서 Stats를 누르면 프레임이 60 부근에서 유지되는 것을 확인할 수 있다.
하이어라키에서 Volume > Global Volume을 추가해 준 후 Profile에 new버튼으로 불륨 프로파일 에셋을 추가해준다. 아래 새로 생긴 Add Override로 Post Processing 후처리를 진행할 수 있다. 아래 세가지 후처리 과정을 추가한다.
Main Camera의 Camera 컴포넌트의 Post Processing 속성을 체크해야 포스트 프로세싱이 잘 작동한다.
이렇게 포스트 프로세싱으로 후처리 효과를 넣어서 좀 더 다이나믹한 연출이 가능하다.
다양한 Post Processing 사용법과 해당 컴포넌트의 속성들의 의미를 보고 싶다면 이 문서를 참고하자
이제 모바일로 잘 구동이 되는지 유니티에서 제공하는 모바일 시뮬레이터를 사용해서 테스트해보자. 게임 창의 Simulator로 모바일 시뮬레이팅이 가능하다.
시뮬레이터에서는 기기 회전, 안전 구역 등을 미리 확인할 수 있다. 여기서 안전 구역은 엣지 모서리 부분, 상단 카메라나 아래 메뉴로 인해 가려질 수 있는 부분을 제외한 안전한 부분이다.
안전구역은 기기마다 다르므로 많은 기기를 확인해보는 것이 좋다.
아이폰의 SafeArea 안에 사냥 종료 버튼이 잘리는 모습, 따라서 사냥 종료 버튼을 위로 끌어올리는 작업을 해주면 좋다.
이 때 실행해보면 UI가 많이 깨지는데 이는 HUD안으로 UI 오브젝트들을 옮기면서 앵커가 깨져서 그렇다 HUD 앵커를 화면 꽉차게 설정한 후 오브젝트 마다 앵커와 Pos 좌표를 설정해서 잘 나오도록 배치한다.
Simulator에서 UI의 배치를 확인하고 알맞게 수정하는 작업도 가능하다. 나는 아이폰 노치에 체력바가 꽉 차도록 수정해주었다.
이처럼 모바일 시뮬레이터 기능을 활용해서 UI의 배치 상태나 안전 구역, 기기 회전에 따른 게임 씬을 빌드 하기 전에 미리 확인할 수 있다.
마지막으로 빌드하기 전 꼭 File > Savem Save Project로 저장하고 File > Build Settings을 열어서 설정을 확인한다.
왼쪽 Platform의 원하는 플랫폼을 선택해서 Switch Platform으로 플랫폼을 변경할 수 있다.
플랫폼이 안뜨면 에디터의 모듈 추가를 해서 원하는 플랫폼 모듈을 꼭 설치해야한다.
만약 추가적인 장면을 빌드에 넣고 싶다면 Add Open Scenes로 게임 장면을 추가해야한다.
추가적으로 왼쪽 하단의 Player Settings.. 를 눌러 플레이어 설정도 수정해준다.
플랫폼을 안드로이드, IOS로 바꿔서 추가적인 설정도 가능하다.
언데드 서바이벌은 세로 고정이기 때문에 Landscape 비활성화
Splash Image는 Personal License의 경우에는 유니티 스플래시 이미지가 무조건 나오게 되어있다. Preview를 눌러 확인해 볼 수 있다.
스플래시 스타일로 밝은 모드의 유니티 스플래시 이미지로 변경할 수 있다.
이제 Build and Run으로 apk 파일을 만들어 줄 수 있다. 나는 PC 모드로 플레이를 할 거라 해상도를 살짝 조정해주고, 플레이어 인풋 시스템을 다시 키보드로 변경 후 윈도우 플랫폼으로 설정 Build and Run 해주었다.