반응형

 

안녕하세요.

 

오늘은 안드로이드에서의 백버튼을 눌렀을 경우 게임이 종료와 홈버튼을 눌러서 프로그램이 비활성화 되었을 경우에 대해서 알아보겠습니다.

 

유니티 종료 함수

Application.Quit() 함수를 이용하여 종료를 합니다.

 

사용은 다음과 같이 합니다.

1
2
3
4
5
6
7
8
void Update()
{
    if (Input.GetKeyDown(KeyCode.Escape))
    { 
        Application.Quit();
    }
}
 
 
cs

 

참고로 Input.GetKeyDown(KeyCode.Escape) 이건 에디터상에서는 ESC키를 입력했을 때이며, 안드로이드폰에서 실행했을 경우에는 백버튼을 눌렀을 경우 발생이 됩니다.

 

비활성화 시 처리

OnApplicationPause 함수에서 처리를 합니다.

다음과 같이 OnApplicationPause에서 정지시 이벤트를 구현합니다.

1
2
3
4
void OnApplicationPause(bool pauseStatus)
{
    m_bPause = pauseStatus;
}
 
cs

 

 

응용

종료 함수를 넣고, 간단하게 text ui값이 1초마다 1씩 증가하는데, 비활성되었을 경우 잠시 중지되고, 활성화되면 다시 증가하도록 구현해보겠습니다.

구성은 이렇게 했습니다.

Text와 Button을 생성하고 빈 GameObject를 생성합니다.

용도는 Text는 숫자가 증가하는 값을 넣을것이고, Button은 직접 기기로 테스트가 불가능하므로 버튼에서 OnApplicationPause를 호출하도록 하겠습니다. 그리고 빈 GameObject에 스크립트를 넣겠습니다.

버튼 변경 내용
GameObject 스크립트추가

 

이렇게 하고 스크립트에 다음 코드를 넣습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManger : MonoBehaviour
{
    GameObject m_goText;
    float m_fCount = 0;
    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 = "";
            m_goText.GetComponent<Text>().text += (int)m_fCount;
        }
        // 백버튼을 눌렀을 경우 게임 종료
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            Application.Quit();
        }
    }
    // 임의로 버튼에 OnApplicationPause호출
    public void SetPause()
    {
        OnApplicationPause(!m_bPause);
    }
    // 백버튼 눌렀을 때 발생하는 함수
    void OnApplicationPause(bool pauseStatus)
    {
        m_bPause = pauseStatus;
    }
}
 
 
cs

 

이렇게 하면 버튼을 눌렀을 경우 카운터를 잠시 중지하고, 다시 누르면 진행되는 것을 볼 수 있습니다.

 

반응형

+ Recent posts