# UnityEvent<T0, T1, T2>

> Three argument version of UnityEvent.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.Events](/engine/6000.6/script-reference/unityengine/events.md)
* **Assembly:** UnityEngine.CoreModule
* **Inherits from:** [UnityEventBase](/engine/6000.6/script-reference/unityengine/events/unityeventbase.md)
* **Implements:** [ISerializationCallbackReceiver](/engine/6000.6/script-reference/unityengine/iserializationcallbackreceiver.md)

```csharp
public class UnityEvent<T0, T1, T2> : UnityEventBase, ISerializationCallbackReceiver
```

## Remarks

Generics are supported, specify type parameters on initialization as shown in the example. Refer to [Configure callbacks in the Inspector](/engine/6000.6/manual/scripting/managing-update-order/unity-events.md) for details on configuring callbacks in the Inspector window.

```csharp
using UnityEngine;
using UnityEngine.Events;

public class ExampleClass : MonoBehaviour
{
    UnityEvent<int, int, int> m_MyEvent;

    void Start()
    {
        if (m_MyEvent == null)
            m_MyEvent = new UnityEvent<int, int, int>();

        m_MyEvent.AddListener(DoSomething);
    }

    void Update()
    {
        if (Input.anyKeyDown && m_MyEvent != null)
        {
            m_MyEvent.Invoke(5, 6, 7);
        }
    }

    void DoSomething(int i, int j, int k)
    {
        Debug.Log("Callback called " + i + ", " + j + ", " + k);
    }
}
```

Note: UnityEvent can also be awaited in any async method.

## Inheritance

**Inherited Members:**

* [UnityEventBase.GetPersistentEventCount()](/engine/6000.6/script-reference/unityengine/events/unityeventbase/getpersistenteventcount.md)
* [UnityEventBase.GetPersistentTarget(int)](/engine/6000.6/script-reference/unityengine/events/unityeventbase/getpersistenttarget.md)
* [UnityEventBase.GetPersistentMethodName(int)](/engine/6000.6/script-reference/unityengine/events/unityeventbase/getpersistentmethodname.md)
* [UnityEventBase.SetPersistentListenerState(int, UnityEventCallState)](/engine/6000.6/script-reference/unityengine/events/unityeventbase/setpersistentlistenerstate.md)
* [UnityEventBase.GetPersistentListenerState(int)](/engine/6000.6/script-reference/unityengine/events/unityeventbase/getpersistentlistenerstate.md)
* [UnityEventBase.RemoveAllListeners()](/engine/6000.6/script-reference/unityengine/events/unityeventbase/removealllisteners.md)
* [UnityEventBase.GetValidMethodInfo(Object, string, Type\[\])](/engine/6000.6/script-reference/unityengine/events/unityeventbase/getvalidmethodinfo.md#getvalidmethodinfo\(object-string-type\))
* [UnityEventBase.GetValidMethodInfo(Type, string, Type\[\])](/engine/6000.6/script-reference/unityengine/events/unityeventbase/getvalidmethodinfo.md#getvalidmethodinfo\(type-string-type\))
