public class Class1 : MonoBehaviour
{
Action action;
private void Trigger()
{
action.Invoke();
}
}
public class Class2 : MonoBehaviour
{
private void Start()
{
action += {Class1 Component}.ActionFunc
}
public void ActionFunc()
{
Debug.Log("action");
}
}
기본적으로 Action을 사용해서 다른 클래스의 특정 함수를 동작시키기 위해서는
1. Action 변수 생성
2. 다른 클래스에서 해당 Action에 함수를 추가
3. Action을 Invoke 하면 다른 클래스의 해당 함수가 실행
하는 식으로 동작한다
그런데 여기서 추가로 단순히 함수를 실행시키는 것뿐만 아니라 인자를 전달해 줄 수도 있다
public class Class1 : MonoBehaviour
{
Action<int> action;
private void Trigger(int index)
{
action.Invoke(index);
}
}
public class Class2 : MonoBehaviour
{
private void Start()
{
action += {Class1 Component}.ActionFunc
}
public void ActionFunc(int index)
{
Debug.Log(index);
}
}
위와 같이 코드를 작성하게 되면, index가 Class2의 ActionFunc까지 전달되어 출력되는 모습을 볼 수 있다
Action<int, string> action;
인자를 여러 개 전달하는 action 변수를 생성할 수도 있다
'Programing > Unity(C#)' 카테고리의 다른 글
[C#] 반복문 내에서 List 요소 삭제 시 주의할 점 (0) | 2024.03.21 |
---|---|
[Error] UnassignedReferenceException (0) | 2024.03.21 |
[Error] get_persistentDataPath is not allowed to be called from a MonoBehaviour constructor (0) | 2024.03.18 |
[Unity] Rect Transform Animation Position 변경하기 (0) | 2024.03.18 |
[Unity] AddListener로 이벤트 추가하기 (0) | 2024.03.17 |