델리게이트
여러 함수가 중복적으로 사용될 때 델리케이트를 이용하여 함수를 등록하면 손 쉽게 함수를 관리 할 수 있는 기능이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public delegate void DeleFunc(int value);
DeleFunc deleFunc;
int hp;
int mp;
public void setHp(int value)
{
hp += value;
}
public void setMp(int value)
{
mp += value;
}
void Start()
{
deleFunc += setHp;
deleFunc += setMp;
deleFunc(5);
print(hp);
print(mp);
}
}
출력 결과
5
5
델리케이트에 함수를 등록할 때는 += 연산자를 이용한다. 반대로 뺄 때는 -= 연산자를 이용하면 된다.
이벤트
이벤트는 서로 다른 클래스에서 함수를 추가 시켜고 한번에 호출 할 수 있다. 이벤트를 테스트 하기 위해서 Test 코드를 약간 수정하고 Test2 코드를 새로 만들어서 테스트 하면 아래와 같다.
Test.cs 파일
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public delegate void DeleFunc(int value);
public static event DeleFunc OnStart;
public int hp;
public int mp;
public void setHp(int value)
{
hp += value * 10;
print("체력: " + hp);
}
public void setMp(int value)
{
mp += value * 2;
print("마나: " + mp);
}
void Start()
{
OnStart += setHp;
OnStart += setMp;
OnStart(5);
}
}
Test2.cs 파일
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test2 : MonoBehaviour
{
void Start()
{
Test.OnStart += LevelUp;
}
public void LevelUp(int value)
{
print(value + "레벨이 되었습니다.");
}
}
출력 결과:
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# 프로퍼티 (0) | 2019.12.05 |
---|---|
C# 상속 (0) | 2019.12.05 |
C# 구조체와 클래스 차이점 (0) | 2019.12.04 |
C# 얕은 복사와 깊은 복사 (0) | 2019.12.04 |
C# Queue와 Stack 사용방법 및 차이점 (1) | 2019.12.04 |