카테고리 없음

[c#] 이벤트와 델리게이트

혀니리리 2023. 12. 12. 13:10
728x90

[Unity] 델리게이트(Dlegate) & 이벤트(Event) 쉽게 접근하기. (tistory.com)

 

[Unity] 델리게이트(Dlegate) & 이벤트(Event) 쉽게 접근하기.

Delegate C#문법에서 타입이란 "값"을 담을 수 있는 존재다. 그렇다면, 그 "값"의 범위에 "함수"도 포함될수 있지 않을까? delegate는 일반적인 class구문이 아니고 delegate라는 예약어로 표현된다. 만약

artsung410.tistory.com

델리게이트라는 개념 ㄹㅇ 처음봄; 

 

Delegate

함수 여러개를 동시에 실행시키고 싶을 떄 쓴다고 함...

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Base : MonoBehaviour
{
    // 함수 여러개를 동시에 실행시키고 싶을대 delegate를 쓴다.
    public delegate void ChainFunction(int value); // 매개변수를 int형으로 받는 델리게이트
    ChainFunction chain;
 
    int score;
    int health;
 
    public void SetScore(int value)
    {
        score += value;
        Debug.Log($"점수가{value} 만큼 증가했습니다. 총 획득 점수 = {score}");
    }
 
    public void SetHealth(int value)
    {
        health += value;
        Debug.Log($"플레이어의 체력이 {value} 만큼 증가했습니다. 총 체력 = {health}");
    }
 
    private void Start()
    {
        // 함수를 더해줄 때
        chain += SetScore;
        chain += SetHealth;
        chain(5);
    }
}

결과

 

 

Event
Observer 디자인패턴과 연관성이 있음

버튼클릭과 같은 사용자 조작으로 발생하거나, 속성 값 변경 등이 일어났을 때, 어떤 일련의 상태들의 변화가 필요한 구독자들에게 전달할 때 유용

 

1)델리게이트와 연동하여 사용하거나

2)구독자를 추가하여 사용

728x90