본문 바로가기
tips/자주쓰는 C# 스크립트

유니티, Button 스크립트로 클릭 연결 onClick 이벤트

by 디지털 수공업자 2020. 12. 18.
반응형

유니티의 Button에서 이벤트 발생시 호출할 메소드를 연결해 둔 것이 가끔 오류나서 끊어지는 경우가 발생한다. 스크립트로 연결해두면 이 같은 상황을 피할 수 있고, 버튼의 작동상태를 제어할 수 있다.

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
 
public class Test : MonoBehaviour {

	Button btnA ;
	Button btnB ;
    
    void Awake() {

	btnA = transform.Find("btnA").GetComponent<Button>() ;
	btnB = transform.Find("btnB").GetComponent<Button>() ;
        
	btnA.onClick.AddListener(DoSomething) ;
	btnB.onClick.AddListener(PressBtnB) ;
	btnC.onClick.AddListener(() => PressBtnC("B")) ;
    
    }
    
    void DoSomething() {
    	
	// A 버튼 눌렀을 때 할일
    	
    }
    
    void PressBtnB() {
    
	// B 버튼 눌렀을 때 A버튼의 onClick 이벤트 끊기.
	btnA.onClick.RemoveListener(DoSomething) ;
    
    }
    
    void PressBtnC(string name) {
    
    	// C버튼 눌렀을 때 전달 받은 인자에 따라 할일 하기
        if (name == "B") DoSomething() ;
	
    }
    
 }
 

A 버튼을 누르면 DoSomething을 호출하고, B버튼을 누르면 A버튼에 할당된 onClick의 지속성 리너를 삭제하여 A 버튼이 작동되지 않게 한다. C버튼을 누르면 string 값을 전달한다.


* 유니티 2D 라이트 셋팅. 유니버설 렌더 파이프라인
* 유니티 2D 애니메이션
* 유니티 코드리스 인앱 IAP

 
반응형

댓글