[C#] 델리게이트

SIYEON·2024년 5월 20일
0

[C#] 기본

목록 보기
10/11
post-thumbnail
  1. 델리게이트 -> 함수들을 통합 실행시켜주게 만드는 델리게이트
하나의 클래스에 있는 함수들을 추가 한번에 호출

public delegate void ChainFunction(int value);
ChainFunction chain;

int power;
int defence;

public void SetPower(int value)
{
	power += value;
    print("power의 값이" + value + "만큼 증가했습니다. 총 power의 값 = " + power);
}

public void SetDefence(int value)
{
	defence += value;
    print("defence의 값이" + value + "만큼 증가했습니다. 총 defence의 값 =" + defence);
}

void Start() {
	chain += SetPower;
    chain += SetDefence;
    // ' += '을 사용하면 함수가 델리게이트에 추가가 된다. 하지만 ' = ' 사용 시 추가된 함수는 사라지고, 우항에 있는 함수만 적용된다.
    
    chain(5);
}
  1. 이벤트 -> 타 클래스의 함수까지 통합 실행하게 해주는 이벤트

test.cs

다른 모든 클래스에 대해서 함수를 추가시키고 호출가능

public delegate void ChainFunction(int value);
public static event ChainFunction OnStart;
ChainFunction chain;

int power;
int defence;

public void SetPower(int value)
{
	power += value;
    print("power의 값이" + value + "만큼 증가했습니다. 총 power의 값 = " + power);
}

public void SetDefence(int value)
{
	defence += value;
    print("defence의 값이" + value + "만큼 증가했습니다. 총 defence의 값 =" + defence);
}

void Start() {
	OnStart += SetPower;
    OnStart += SetDefence;
    // ' += '을 사용하면 함수가 델리게이트에 추가가 된다. 하지만 ' = ' 사용 시 추가된 함수는 사라지고, 우항에 있는 함수만 적용된다.
    
    chain(5);
}

test2.cs

void Start() {
	Test.OnStart += Abc
} 

public void Abc(int value)
{
	print(value + "값 증가");
}
profile
Unity

0개의 댓글