ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unity | 람다식(Lambda Expression)
    다시한번 개발자도전! 2026. 3. 3. 14:31

    1. 람다식이란?

    람다식은 이름이 없는 **익명 함수(Anonymous Function)**를 만들기 위한 간결한 문법임. 코드를 변수처럼 다루거나, 다른 메서드의 인수로 직접 전달할 때 매우 유용함.

     


    2. 기본 문법과 구조

    람다 연산자 =>를 기준으로 왼쪽에는 입력 매개변수, 오른쪽에는 식 또는 문장 블록이 위치함.

    (매개변수) => 식/문장_블록
    • 매개변수: 데이터 타입을 명시하지 않아도 컴파일러가 유추함(형식 유추).
    • 식/문장: 결과값을 반환하거나 특정 로직을 수행함.

    3. 활용 방법

    ① Unity Event 시스템 (버튼, UI)

    public class UIController : MonoBehaviour
    {
        public Button startButton;
    
        void Start()
        {
            // 간단한 로그 출력이나 함수 호출 시 편리함
            startButton.onClick.AddListener(() => Debug.Log("Game Start!"));
            
            // 매개변수가 있는 함수를 연결할 때
            int stageLevel = 1;
            startButton.onClick.AddListener(() => LoadStage(stageLevel));
        }
    
        void LoadStage(int level) => Debug.Log($"Loading Stage {level}");
    }

    ② Action 활용 람다

    public void ProcessData()
    {
        int multiplier = 2;
        
        // Action 대리자를 활용한 람다
        System.Action<int> calculate = (inputNumber) => 
        {
            int result = inputNumber * multiplier;
            Debug.Log($"Result: {result}");
        };
    
        calculate(10);
    }

     


    📋 유니티 C# 람다식(Lambda) 장단점 비교

    구분 장점 (Pros) 단점 (Cons)
    생산성 코드 간결화: 별도 메서드 선언 없이 즉석에서 로직 구현 가능. 재사용성 불가: 익명 함수이므로 다른 곳에서 호출하여 쓸 수 없음.
    유지보수 지역성(Locality): 관련 로직이 사용하는 곳 바로 옆에 있어 흐름 파악이 쉬움. 디버깅 난해: 에러 발생 시 콜 스택에 이름이 명확히 남지 않아 추적이 어려움.
    기능성 클로저(Closure): 외부 지역 변수를 매개변수 전달 없이 내부에서 직접 참조 가능. 이벤트 해제 곤란: 등록한 람다는 특정해서 제거하기 어려워 메모리 누수 위험이 있음.
    성능 지연 실행: 필요한 시점에만 로직이 실행되도록 설계하기 유리함. GC 부하: 외부 변수 캡처 시 힙 메모리 할당이 발생하여 가비지 컬렉션 유발.

     

Designed by Tistory.