✅유니티는 여러 플랫폼을 지원하여 빌드를 할 수 있도록 지원합니다. 유니티에서 안드로이드 빌드를 위한 준비를 해보겠습니다. 방법 자체는 매우 간단하지만, 안드로이드 게임에서 원활한 지원을 위해 모바일UI에 대한 스크립트를 따로 작성해야합니다.
1. Android Build Support 설치하기
- 안드로이드를 빌드하기위해서 유니티허브(또는 유니티 아카이브)에서 Android Build Support를 설치합니다.
2. 유니티 에디터 껐다 켜기
유니티 에디터가 켜져있는 상태에서 설치를한경우, 바로 적용되지 않아 한번은 껐다 켜줘야합니다.
3. Android로 Platform을 Switch하기
빌드를 하기 위해 Android로 플랫폼을 전환해줍니다.
4. (선택)색영역 설정하기
Player > Other Settings > ColorSpace를 Gamma로 바꿔줍니다. URP 또는 HDRP에서는 Linear로 되어있는데, 안드로이드 플랫폼으로 바꾸면, 오류가 나며 Gamma로 바꿔줘야 큰 문제가 생기지 않습니다.
5. ❇️ 모바일 입력 방식에 맞는 입력 인터페이스로 스크립트 정리하기
- 아래의 스크립트는 Windows 또는 Mac 플랫폼을 지원하기위해 만든 방식이며, 마우스 및 키보드 입력 방식을 사용합니다. 하지만, 모바일에서는 터치 또는 드래그를 지원하기때문에 기존의 방식으로는 지원이 어려워 새로운 입력 방식을 구현해줘야합니다.
private IEnumerator FollowMousePos()
{
while (true)
{
if (Input.GetKeyDown(KeyCode.R)) { mTowerObject.transform.Rotate(Vector3.up * 90); }
if (Input.GetMouseButtonDown(1))
{
...
}
//레이 체크
for (int i = 0; i < GameManager.Instance.RaycastHits.Length; ++i)
{
//타워를 구매하는 공간인가?
if (GameManager.Instance.RaycastHits[i].transform.tag == "Ground")
{
...
if (Input.GetMouseButtonDown(0))
{
//해당 위치에 오브젝트를 두고 더 이상 배치하지 못하도록 막음
GameManager.Instance.RaycastHits[i].transform.GetComponent<TowerGround>().BlockBuild();
//그리드 이미지 비활성화
mBuildGridImage.SetActive(false);
//타워 초기화
mTowerObject.GetComponent<TowerBase>().InitTower();
yield break;
}
}
else
{
mBuildGridMat.SetColor("_BaseColor", Color.red);
}
}
}
yield return null;
}
}
- 이때 사용하는것이 플랫폼을 확인하여 다른 코드가 실행되도록 하는 코드가 있습니다.
- 아래의 코드는 현재 실행중인 플랫폼이 안드로이드인지 확인하며, 안드로이드인경우 따로 작성한 스크립트가 실행되게 구현할 수 있습니다.
if (Application.platform == RuntimePlatform.Android)
- 터치 입력 방식을 지원하기위해 키보드 및 마우스의 입력을 버튼으로 대체하여, 모든 기능이 작동이 가능하도록 따로 구현했습니다.
// 안드로이드 플랫폼이면 버튼들을 활성화시킨다.
...
if (Application.platform == RuntimePlatform.Android)
{
mAndrioidButtons.SetActive(true);
}
...
//키보드 및 마우스 입력을 버튼으로 대체하도록 한다.
public void BTN_AndroidConfirmTower()
{
...
}
public void BTN_AndroidCancelTower()
{
...
}
public void BTN_AndroidRotateTower()
{
...
}
- 여기서 다룬 방법으로 윈도우 플랫폼과 안드로이드 플랫폼 모두를 지원하고, 플랫폼 별 모든 기능또한 동일하게 제공하는 프로젝트를 제작하였습니다.
게임엔진응용실습 Unit5 프로젝트 - Tower Defense (Windows & Android)
Tower Defense by Bonnate Tower, Defense bonnate.itch.io
bonnate.tistory.com
'unity etc. > others' 카테고리의 다른 글
[유니티] 오디오믹서 사운드 관리 (0) | 2022.11.21 |
---|---|
유니티 애니메이션 합치기(애니메이션 레이어, 마스크) (2) | 2022.11.21 |
유니티 이미지 외곽선 오류(PSD Matte) 해결하기 (0) | 2022.11.04 |
유니티 KeyCode 값 (0) | 2022.09.26 |
유니티 Shader.Find 함수 오류 해결하기 (0) | 2022.09.26 |