[UI] Button



이번 글에서는 내가 몰랐던 Button의 기능들을 다루겠다.

image

위 사진을 보면 Transition이라는 프로퍼티가 있는데 이건 버튼 UI가 화면에 어떤식으로 나올지 결정하는 프로퍼티다.

image

Transition의 타입을 Color Tint가 아닌 Sprite Swap으로 바꾸고 버튼의 각 상태에 따라 변경하고 싶은 스프라이트를 넣으면 그 스프라이트로 바뀌게 된다.

그리고 간단하게 색상을 바꾸고 스프라이트를 바꾸는 정도면 Color Tint나 Sprite Swap을 이요하면 되지만 좀 더 복합적이고 세밀한 작업이 필요하면

image

Animation타입을 사용한다 여기서 하위 프로퍼티 중 고칠 것은 없는데 Auto Generate Animation버튼을 누르면 버튼에 대한 Animator Controller가 생성이 되고 자동으로 버튼 게임 오브젝트에 Animator컴포넌트가 추가된다.

image

그리고 [Ctrl+6]을 누르면 Animation창이 나오는데 거기서 원하는 상태에서의 애니메이션을 만들 수 있다.

그리고 Button컴포넌트의 On Click()라는 부분이 보일 것이다. 보통 여기다 버튼이 눌렸을 때 실행 할 함수를 스크립에서 만들고 On Click()에 추가하는 형태로 할 것이다. 하지만 스크립트상에서 등록하는 하는 방법이 있다. 코드로 확인해보자.

 	Button button;
    void print()
    {
        Debug.Log(10);
    }
    void Start()
    {
        button = GetComponent<Button>();
        button.onClick.AddListener(print);
    }

위와 같이 Button 컴포넌트를 가져와서 onClick.AddListener(함수명);을 사용하면 인스펙터 창에서 함수를 등록한 것과 동일한 작동을 하게 된다.


꿀팁

그리고 모바일등 화면이 작은곳에서 버튼을 사용하면 터치를 잘 못 하거나 잘 인식이 안되는 경우가 있을 수 있다.(버튼이 작아서) 이럴때 해결하는 방법이 있다. 버튼 게임 오브젝트의 자식 오브젝트로 Image 게임 오브젝트를 넣고 내가 원하는 터치 범위까지 크기를 늘리고 Image의 색상에서 알파값을 0으로 만들어 투명하게 만들면 그 범위까지 터치가 가능하다. 이러한 이유는 Image 게임 오브젝트가 Button 게임 오브젝트의 자식 게임 오브젝트이기 때문이다.

image

image




© 2022. by KSC

Powered by sora