728x90
반응형
📕오늘의 공부 주제
Unity에서 Android 백버튼, 홈버튼 처리 및 일시정지/종료 로직 구현 방법
🤔Why?
모바일(Android)에서 백버튼이나 홈버튼 입력은 매우 일반적인 사용자 행위이지만, 이를 적절히 처리하지 않으면 게임이 제대로 종료되지 않거나, 일시정지 상태를 인식하지 못해 게임이 계속 돌아가는 문제가 발생할 수 있다. 사용자 경험 향상과 안정성 확보를 위해 필수적으로 알아야 할 내용이라 정리함.
📖오늘의 공부 내용
✅ Android 백버튼으로 종료 처리
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape)) // Android의 백버튼 대응
{
Application.Quit();
}
}- Unity 에디터에서는 ESC키로도 테스트 가능.
Application.Quit()은 앱을 종료하지만, Android에서는 프로세스가 완전히 종료되지 않아 이후 실행 시 문제가 생길 수 있음.
✅ 홈버튼 등으로 앱이 비활성화될 때 처리: OnApplicationPause
void OnApplicationPause(bool pauseStatus)
{
m_bPause = pauseStatus; // true면 일시정지 상태
}- 홈버튼, 전화 수신 등으로 앱이 백그라운드로 전환되면 호출됨.
- 게임 상태, 사운드, UI 애니메이션 등을 일시 정지할 수 있도록 활용.
✅ 일시정지/재개에 따른 카운트 예제
public class GameManager : MonoBehaviour
{
GameObject m_goText;
float m_fCount = 0f;
bool m_bPause = false;
void Start()
{
m_goText = GameObject.Find("Canvas/Text");
m_goText.GetComponent<Text>().text = "1";
}
void Update()
{
if (!m_bPause)
{
m_fCount += Time.deltaTime;
m_goText.GetComponent<Text>().text = ((int)m_fCount).ToString();
}
if (Input.GetKeyDown(KeyCode.Escape))
{
Application.Quit();
}
}
public void SetPause()
{
OnApplicationPause(!m_bPause); // 수동 일시정지/해제용 버튼에서 호출
}
void OnApplicationPause(bool pauseStatus)
{
m_bPause = pauseStatus;
}
}⚠️ Application.Quit()의 한계와 대안
- Android에서
Application.Quit()은 앱을 완전히 종료하지 못할 수 있음. - 해결법 예시 (출처에 제시된 방식):
void OnApplicationQuit()
{
System.Diagnostics.Process.GetCurrentProcess().Kill();
}
단, 이 방식은 iOS에서는 동작하지 않으며, 되도록이면 Android 전용 조건으로 분기 처리하는 것이 좋음.
🔗 참고 링크
728x90
반응형
'프로그래밍 공부 > TIL' 카테고리의 다른 글
| 2025-07-29 TIL (0) | 2025.07.29 |
|---|---|
| 2025-07-28 TIL (0) | 2025.07.28 |
| 2025-07-24 TIL (0) | 2025.07.24 |
| 2025-07-23 TIL (0) | 2025.07.23 |
| 2025-07-21 TIL (0) | 2025.07.21 |
