using System;
...
public Action onReduceHp; //리턴타입이 없고 매개변수가 없는 형태의 delegate
public void Progress(Action testDel)
{
Debug.Log("어쩌고");
}
리턴타입이 없고 매개변수가 없는 형태의 delegate는 하도 많이 쓰다보니까... 앞사람이 틀을 아예 만들어놨음
public Action 이름;
이런 식으로 쓰면 됨
리턴 타입은 없지만 매개변수가 있는 경우 ( public delefate void OnDamage(float damage)
public Action<float> onDamage;
이런 식으로 적으면 됨.
public Func<int> returnInDel;
Func한텐 <int>가 리턴타입. 매개변수가 아님!!
public Func<매개변수, 리턴값> 이름;
public void Progress(ReturnInDel<int> del)
↓
public Func<int> returnInDel;
public delegate int TestDel(float value)
↓
public Func<float , int> testDel;
Action은 리턴 타입이 없고 매개변수도 없는 델리게이트를 미리 선언해놓은 것.
public delegate void Action();
Action<T>는 리턴 타입이 없지만 매개 변수가 존재할 때 사용.
public delegate void Action<T>(T value);
Func: 리턴 타입이 있는 Delegate
단점
매개변수 명이 기본값으로 고정되어 있어 다른 스크립트에서 연결될 함수를 자동 생성했을 때 어떤 값이 전달되는지 바로 알기 힘듦.
해결법
직접 delegate 정의해서 쓰기