상세 컨텐츠

본문 제목

[Unity] 유니티 Back, BackKey, 뒤로가기(디바이스 하드웨어 버튼) 버튼 관련

게임엔진관련/유니티 엔진

by AlrepondTech 2019. 8. 7. 10:58

본문

반응형

 

 



=======================

=======================

=======================

 

 

 

 

 

 

출처: http://doyouknowunity.blogspot.com/2014/11/unity-android.html

 

[Unity] Android에서 하드웨어버튼 (메뉴버튼,뒤로가기,홈) 대응 방법

 

요즘 모바일 프로젝트에서 Unity를 쓰시는분들이 많습니다.
하드웨어버튼, 특히 뒤로가기버튼에 상황에 적절한 행동을 수행하는지가 사용자경험 관점에서 상당히 영향을 미친다고 생각합니다.
하드웨어버튼 대응이 적절한지가 구글 피쳐드 검수기준이라는 말도 이미 알려져있는 상태이기도 합니다.
그래서 다들 Unity에서 하드웨어버튼에 대응하는 방법이 궁금하실텐데, 한국 웹에서는 정보를 찾기가 힘들어서 정리 포스팅 합니다.

void Update()
{
    if (Application.platform == RuntimePlatform.Android)
    {
        if (Input.GetKey(KeyCode.Home))
        {
            //home button
        }
        else if(Input.GetKey(KeyCode.Escape))
        {
            //back button
        }
        else if(Input.GetKey(KeyCode.Menu))
        {
            //menu button
        }
    }
}

 

 

 



=======================

=======================

=======================

 

 

 

출처: https://phiru.tistory.com/177

 

아이폰은 뒤로가기가 없지. 

 

그러니 안드로이드만 해야지.

 

뒤로가기 버튼은 키 값으로는 Esc이다. 코드로 하면

 

KeyCode.Escape  이지.

 

그럼 처리 하자

 

void Update()

{

if(Application.platform == RuntimePlatform.Android)

{

if(Input.GetKey(KeyCode.Escape))

{

// 할꺼 하셈

// Application.Quit();

}

}

}



출처: https://phiru.tistory.com/177 [보금자리]

 

 



=======================

=======================

=======================

 

 

 

출처: https://sunghojang.tistory.com/7

 

if(Application.platform == RuntimePlatform.Android)

{

if(Input.GetKey(KeyCode.Escape))

{

 // Application.Quit();

}

}

 

위 코드는 update()에 넣는다.

 

이렇게 작성하면, 플랫폼이 안드로이드인지를 확인한 뒤에 

 

뒤로가기 버튼은 키 코드로는 Escape이다. 

 

따라서, 코드로 하면 KeyCode.Escape 이다.

 

이렇게하면, 안드로이드 폰이며 동시에 뒤로가기 버튼을 누른 조건에 해당된다.

 

// Application.Quit();

 

이 부분에 원하는 코드를 작성하면 된다.

 

 

 

최종 코드

void Update()

{

creditVal.text = credit.ToString(); // 숫자를 문자로

        // stageVal.text = stage.ToString();

if (Application.platform == RuntimePlatform.Android)

{

if (Input.GetKey(KeyCode.Escape))

{

                Back_Panel.SetActive(true);

}

}

}

 

 



=======================

=======================

=======================

 

 

 

반응형

 

 

728x90

 

 

 

출처: https://sayurahm.blogspot.com/2017/01/testing-getkey-getkeydown-getkeyup-kr.html

 

테스트 : GetKey(), GetKeyDown(), GetKeyUp()

 




디버그 로깅 라인을 넣는 간단한 방법으로 세가지 키입력 관련 메소드들 - Input.GetKey(), Input.GetKeyDown(), Input.GetKeyUp() -이 언제 true를 반환하는지 확인해 보았습니다.
(Unity Editor 버전 5.5.0f3)

 

private int FrameCount;

 

private void Update()
{
    Framecount++;

    if(Input.GetKey(KeyCode.Space))
    {
        Debug.Log(string.Format("-- GetKey @FrameNumber:{0}" , Framecount));
    }
    if(Input.GetKeyDown(KeyCode.Space))
    {
        Debug.Log(string.Format("__ GetKeyDown @FrameNumber:{0}", Framecount));
    }
    if(Input.GetKeyUp(KeyCode.Space))
    {
        Debug.Log(string.Format("|| GetKeyUp @FrameNumber:{0}", Framecount));
    }

}



그리고 아래 로그를 얻었습니다.




로그에 의하면 :
1. GetKeyDown() 은 '새롭게' 키가 눌린 그 프레임에서 true를 반환합니다.
2. GetKey()는 프레임에서 그 키가 '눌려진 상태' 이면 true를 반환합니다.
3. GetKeyUp()은 키가 릴리즈 된 시점의 프레임에서 true를 반환합니다.

1번과 2번에 의해, 두개의 로그가 같은 프레임에서 출력 되었습니다.
2번에 의해, 키가 눌려진 상태의 프레임들에서는  GetKey()가 계속 true를 반환했습니다.

 

 

 



=======================

=======================

=======================

 

 

 

 

출처: https://itskeleton.tistory.com/entry/ITSkeleton-Unity-GetKeyGetKeyDownGetKeyUp-%EC%84%A4%EB%AA%85

 

안녕하세요

ITSkeleton 입니다.

 

오늘은

유니티에서 자주사용하는

Input 함수 중에

Getkey부분에 대하여 알아보려 합니다.

 

먼저

간단히 설명해 드리겟습니다.

 

GetKey

-해당되는 키를 누르고 있을 경우 True를 반환해 줍니다.

 

GetKeyDown

-해당되는 키를 눌렀을때 True를 반환해 줍니다.

 

GetKeyUp

-해당되는 키를 눌렀다 땠을때 True를 반환해 줍니다.

 

말이 생각보다 헷갈리게 되어있지요?

간단하게 생각한다면 정말 간단한 방식입니다.

간단히 코드로 보면서 설명해 드리겠습니다.

 

Input.GetKey("a")

 

이렇게 쓴다면

'a' 키를 누르고 있으면 계속해서 작동을 합니다.

꾸욱 누르고 있을 수 있다는거죠.

 

간단히 FPS게임을 예로 들자면

'a'키는 왼쪽으로 가는 키로 많이 사용합니다.

 

위코드를 사용하고 'a'키를 누르고 있으면

왼쪽으로 계속해서 이동하는거죠!

 

Input.GetKeyDown("a")

 

를 사용한다면 'a'키를 꾹 누르고 있더라도

한번 작동한뒤 다시 누를때까지 작동하지 않습니다.

 

키를 눌렀을경우에 딱 한번만 작동하는 것이죠.

 

Input.GetKeyUp("a")

 

를 사용하면 'a'키를 눌렀다가 땔경우에 한번. 발생합니다.

 

어렵지 않지요?

간단한 테스트 코드를 드리겠습니다.

메소드로 작성된 코드입니다.

Update 부분에 호출하시면 작동확인을 하실 수 있습니다.

 

void KeyCheck()

{

if(Input.GetKey("a"))

{

   Debug.Log("KeyCheck : a");

}

if(Input.GetKeyDown("s"))

{

   Debug.Log("KeyCheck : s");

}

if(Input.GetKeyUp("d"))

{

   Debug.Log("KeyCheck : d");

}

}

 

위의 코드를 이용하여

로그창을 보시며 한번 확인해 보세요!



출처: https://itskeleton.tistory.com/entry/ITSkeleton-Unity-GetKeyGetKeyDownGetKeyUp-설명 [ITSkeleton의 IT세상]

 



=======================

=======================

=======================

 

 

 

반응형


관련글 더보기

댓글 영역