---
tags:
    - "UI"
    - "Canvas"
    - "Toggle"
    - "Check"
    - "Box"
    - "Switch"
    - "On"
    - "Off"
    - "Radio"
---

# On Toggle Change

[UI](index.md) / **On Toggle Change**

## Description

Executed when the Toggle on the target game object is turned on or off

## Code

```cs
using System;
using UnityEngine;
using VisualScript.Icons;

namespace VisualScript.Runtime.UI
{
    [Title("On Toggle Change")]
    [Image(typeof(IconUIToggle), ColorTheme.Type.TextLight)]

    [Description("Executed when the Toggle on the target game object is turned on or off")]
    [Category("UI/On Toggle Change")]

    [Keywords("UI", "Canvas", "Toggle", "Check", "Box", "Switch", "On", "Off", "Radio")]

    [Serializable]
    public class TriggerCoreUIToggle : TriggerHandleSourceBase<HandleOnUIToggle>
    {
        // EXPOSED MEMBERS: -----------------------------------------------------------------------

        [SerializeField] private UIToggleChange m_When = UIToggleChange.Any;

        // PROPERTIES: ----------------------------------------------------------------------------

        protected override string GetTitle(GameObject source) => this.m_When switch
        {
            UIToggleChange.Any => $"{this.SourceName} Toggle Change",
            UIToggleChange.TurnedOn => $"{this.SourceName} Toggle On",
            UIToggleChange.TurnedOff => $"{this.SourceName} Toggle Off",
            _ => throw new ArgumentOutOfRangeException()
        };

        // OVERRIDE METHODS: ----------------------------------------------------------------------

        protected override void OnTrigger(GameObject target)
        {
            if (this.m_Handle == null) return;

            switch (this.m_When)
            {
                case UIToggleChange.Any: break;
                case UIToggleChange.TurnedOn: if (!this.m_Handle.IsOn) return; break;
                case UIToggleChange.TurnedOff: if (this.m_Handle.IsOn) return; break;
                default: throw new ArgumentOutOfRangeException();
            }

            using Args args = Args.Get(this.Component, target);
            this.Run(args);
        }
    }
}
```

