반응형
유니티의 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
반응형
'tips > 자주쓰는 C# 스크립트' 카테고리의 다른 글
유니티 RectTransform 좌표 이동 (0) | 2020.12.30 |
---|---|
유니티 C# Dictionary에서 Value로 Key 값 알아내기 (0) | 2020.12.24 |
유니티, 일정한 시간 딜레이와 반복 Invoke (0) | 2020.12.18 |
유니티 DateTime을 string으로 (0) | 2020.11.05 |
자주쓰는 유니티 Application 이벤트 (0) | 2020.11.01 |
댓글