페이지

2014년 6월 23일 월요일

NGUI Button 버튼 만들기 (NGUI 3.6.x 기준, Unity3d 4.5.0f1, 4.x)

개발환경 : Unity3D 4.5.0f6, NGUI 3.6.3


대부분 개발자들이 2.x 대의 방법으로 쓰고 있어서 정리해봅니다.

기존 방법인 UIButtonMessage 를 Component 에 추가해서 쓰게되면




This is a legacy component. Consider using the Event Trigger instead.
"예전 컴퍼넌트니.. EventTrigger 를 써라." 라는 경고..

대부분 잘 돌아가니 대충 이걸 쓰는데요.

나중을 위해서라도 최신 방법을 쓰는게 좋겠지요.


//-----------------------------------------------------------------

UIEventTrigger 를 쓰기전에

3.X 부터 제공되고 있는 간단한 버튼메세지 추가방법을 보면



OnClick 이라는 것이 추가되었습니다.

적용하는 방법은



그림과같이
Notify -- 메세지가 전달될 GameObject
Method -- GameObject에 추가한 컴퍼넌트 의 함수 선택
Arg 0 -- 버튼자신의 게임오브젝트 (Arg 0 아래<GameObject>는 전달될 객체)
가 되겠습니다.

전반적구조

Hierarchy


StartButton 게임 오브젝트
ButtonManager 게임 오브젝트



ButtonComponet.cs 내용

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
using UnityEngine;
using System.Collections;
public class ButtonComponent : MonoBehaviour {
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
    public void ButtonMessage(GameObject _g)
    {
        Debug.Log(_g.name);
        switch (_g.name)
        {
            case "StartButton":
                Debug.Log("Start!!");
                break;
        }
    }
}

//---------------------------------------------------------------------

이걸 응용하여 이번에 추가된 UIEventTrigger 를 써보면

StartButton 게임 오브젝트에 Event Trigger 컴퍼넌트 추가



추가해보면 방금해본 OnClick 과 다를게 없습니다.
똑같이 게임오브젝트와 함수를 연결해주면 됩니다.


이를 이용해 오버, 아웃, 누르고있기, 떼기, 드래그 등등을 구현할 수 있습니다.



클릭 기능만 필요하다면 굳이  UIEventTrigger 를 추가해서 사용말고

UIButton - On Click 에 간단히 추가해서 사용하면 되겠지요.




댓글 없음 :

댓글 쓰기