---
title: "Delegates"
content_type: tutorial
url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates?language=en"
language: en
container_type: course
container_title: "Intermediate Scripting"
container_url: "https://learn.unity.com/course/intermediate-gameplay-scripting.md?language=en"
standalone_markdown_url: "https://learn.unity.com/tutorial/delegates.md?language=en"
previous_title: "Quaternions"
previous_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/quaternions?language=en"
previous_markdown_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/quaternions.md?language=en"
next_title: "Attributes"
next_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/attributes?language=en"
next_markdown_url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/attributes.md?language=en"
difficulty: intermediate
duration_minutes: 5
unity_version:
  - "2019.3"
  - "2019.2"
  - "2019.1"
  - "2018.4"
  - "2018.3"
  - "2018.2"
  - "2018.1"
  - "2017.4"
  - "2017.3"
  - "2017.2"
  - "2017.1"
  - "5.x"
  - "4.x"
supported_unity_versions:
  - name: "2019.3"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2019.3"
  - name: "2019.2"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2019.2"
  - name: "2019.1"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2019.1"
  - name: "2018.4"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2018.4"
  - name: "2018.3"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2018.3"
  - name: "2018.2"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2018.2"
  - name: "2018.1"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2018.1"
  - name: "2017.4"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2017.4"
  - name: "2017.3"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2017.3"
  - name: "2017.2"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2017.2"
  - name: "2017.1"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=2017.1"
  - name: "5.x"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=5.x"
  - name: "4.x"
    url: "https://learn.unity.com/course/intermediate-gameplay-scripting/tutorial/delegates.md?language=en&version=4.x"
last_updated: "2026-09-30T21:04:20.000Z"
---

# Delegates

Create and use delegates in C# scripts to add flexible, dynamic behavior to your Unity applications.

How to create and use delegates to provide complex and dynamic functionality in your scripts.

Previous: [Enumerations](https://learn.unity.com/course/beginner-scripting/tutorial/enumerations?version=2019.3)

Next: [Switch Statements](https://learn.unity.com/tutorial/switch-statements?projectId=5c8920b4edbc2a113b6bc26a)

## 1. Delegates

[Video](https://connect-mediagw.unity.com/h1/20220110/videos/a3f763b3-6281-4f70-9e56-409dd91dca39_U_Intermediate_16_Delegates.mp4) ([Transcript (en)](https://connect-mediagw.unity.com/h1/20220112/d71c33b2-6982-4586-9aa5-e516e5a75572_I_16_Delegates_v3.0.vtt))

 **DelegateScript**

```csharp
using UnityEngine;
using System.Collections;


public class DelegateScript : MonoBehaviour 
{    
    delegate void MyDelegate(int num);
    MyDelegate myDelegate;


    void Start () 
    {
        myDelegate = PrintNum;
        myDelegate(50);

        myDelegate = DoubleNum;
        myDelegate(50);
    }

    void PrintNum(int num)
    {
        print ("Print Num: " + num);
    }

    void DoubleNum(int num)
    {
        print ("Double Num: " + num * 2);
    }
}
```

 **MulticastScript**

```csharp
using UnityEngine;
using System.Collections;

public class MulticastScript : MonoBehaviour 
{
    delegate void MultiDelegate();
    MultiDelegate myMultiDelegate;


    void Start () 
    {
        myMultiDelegate += PowerUp;
        myMultiDelegate += TurnRed;

        if(myMultiDelegate != null)
        {
            myMultiDelegate();
        }
    }

    void PowerUp()
    {
        print ("Orb is powering up!");
    }

    void TurnRed()
    {
        renderer.material.color = Color.red;
    }
}
```
