한 걸음 두 걸음

Unity 유니티 Button onClick Event 추가하기 본문

Unity

Unity 유니티 Button onClick Event 추가하기

언제나 변함없이 2019. 1. 24. 21:26
반응형

버튼 추가

UI 중에서 버튼 하나 추가한다.

버튼은 굉장히 큰 객체이므로, button을 더블클릭해서 봐주는 것이 좋다.

material 및 script 추가

여기서 추가해줄 이벤트는 버튼 클릭 시 CUBE의 material 색상을 변화시켜주는 것이다.

  1. 첫 번째로 cube와 material을 추가해주고,

  2. C# 스크립트를 하나 만들어준다.

문제는,

나는 script c#파일의 이름을 ButtonEvent로 바꿔줬는데 초기에 설정한 이름이 NewBehaviourScript였을 때 발생한다. 더블클릭해서 들어갈 경우,

이런식으로 public class의 이름과 ButtonEvent의 이름이 일치하지 않으면 나중에 적용이 안되므로 꼭 맞춰주도록 하자.

그럼 다음과 같은 코드가 입력되어있는 것을 확인할 수 있는데

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
}

여기서 button onClick 이벤트가 발생했을 때 발생할 일 ( 큐브의 material 색상을 변경한다 ) 를 정해주어야하므로,

changeMaterial이라는 public custom함수를 새로 하나 만들어준다.
(지금 start나 update함수를 쓰지 않을 것이므로 없애줘도 상관없다.)

여기서 사용되는 GameObject는 두 가지인데, 큐브 자신의 GameObject gameObject하나와 버튼의 GameObject이다.

나는 이 스크립트를 만들어서 큐브에 적용시켜줄 것이므로(이벤트를 받아와 큐브의 material.color를 변경시켜줄 예정) GameObject로 버튼을 하나 받아오자.

GameObject button;

그리고 (자기자신은 미리 GameObject gameObject로 되어있음) gameObject에는

gameObject.GetComponent().material.color = Color.green로 랜더링 컴포넌트를 가져와 그 안에 있는 material 내의 color 속성을 지정해주면 된다.

이렇게 해서 간단하게 코드가 완성되었다.

  using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
    public GameObject button;

    public void changeMaterial()
    {
        gameObject.GetComponent<Renderer>().material.color = Color.blue;

    }
}

스크립트를 저장해주고, (realtime으로 반영된다. 꼭 저장 후 사용!)
GameObject를 public으로 해주어야 외부에서 값을 받아올 수 있다.


버튼 onClick 추가

버튼 클릭 후, 아래에 있는 onClick()의 +버튼을 눌러 새롭게 하나 추가한다.

그다음 위의 작은 아이콘을 눌러 Cube를 지정해준 다음,

큐브에 적용시켜놓은 script인 changeMaterial함수를 지정해준다.

이제 큐브에 onClick 이벤트가 발생하면 해당 함수(스크립트)가 호출될 것이다.

플레이버튼 눌러주고, 버튼 클릭하면,

이렇게 파랗게 변한 것을 확인할 수 있다.

여기까지 버튼에 onClick 이벤트 처리하는 것을 알아보았습니다.

반응형