using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class UIButtonExample : MonoBehaviour
{
public delegate void DelegateWithInt(int _num);
private DelegateWithInt callback = null;
[SerializeField]
private Button btn = null;
[SerializeField]
private TextMeshProUGUI msg = null;
private void Start()
{
//btn.onClick.AddListener(OnClickButton); //AddListener(메소드); = 이벤트 발생시(메소드 호출);
//Arrow Function
btn.onClick.AddListener(
() => { Debug.Log("Lambda Exampression"); } ); //람다식 - 익명(임시)함수
//(함수매개변수) => {내용}
//callback = OnclickButton; //함수를 호출만 되면 되는 경우에
//callback = OnClickWithInt; //델리게이트에 맞게 Int 매개변수를 받는 메서드를 새로 만드는 것도 가능하지만 과정이 귀찮다.
callback = (int _num) => { OnClickButton(); }; //그래서 람다식이 나오게 됨
}
public void OnClickButton()
{
Debug.Log("hi");
}
private void OnClickWithInt(int _num)
{
OnClickButton();
}
}
유니티에서 람다식은 주로 이벤트 처리, 콜백, 그리고 간단한 함수를 정의할 때 유용하게 사용된다.
콜백함수를 사용시 과정이 귀찮아지고 코드의 가독성이 좋지 않은 문제가 발생하게 되는데
이 문제를 람다식으로 해결하면 가독성과 생산성이 좋아진다고 볼 수 있다.
'Unity' 카테고리의 다른 글
AI - NavMesh (0) | 2024.11.04 |
---|---|
UI - Canvas (0) | 2024.10.18 |
Texture (1) | 2024.10.07 |
Lerp(선형 보간) (0) | 2024.10.01 |
Coroutine(코루틴) (0) | 2024.09.30 |