Documentation index for AI agents (llms.txt) A Markdown version of every page is available: request the page's source under /docs/, follow the "alternate" link in this page's head, or start from /llms.txt.
Visual Script logo Manual

Run Event#

Control / Run Event

Description#

Forces an Event to run

Parameters#

Name Description
Event The scene Event component to execute
Source The Source object referenced in the call
Target The Target object referenced in the call
Await Whether to await the event to finish or not

Code#

using System;
using UnityEngine;
using VisualScript.Icons;

namespace VisualScript.Runtime
{
    [Title("Run Event")]
    [Image(typeof(IconEvent), ColorTheme.Type.Blue)]

    [Description("Forces an Event to run")]
    [Category("Control/Run Event")]

    [Parameter("Event", "The scene Event component to execute")]
    [Parameter("Source", "The Source object referenced in the call")]
    [Parameter("Target", "The Target object referenced in the call")]
    [Parameter("Await", "Whether to await the event to finish or not")]

    [Keywords("Execute", "Play", "Run", "Call")]
    [Keywords("Action", "Trigger", "Instruction")]

    [Serializable]
    public class InstructionCoreRunEvent : Instruction
    {
        [SerializeField]
        private GetGameObject m_Event = new GetGameObject(new TypeGameObjectComponentEvent());

        [SerializeField]
        private GetGameObject m_Source = new GetGameObject(new TypeGameObjectSource());

        [SerializeField]
        private GetGameObject m_Target = new GetGameObject(new TypeGameObjectTarget());

        [SerializeField] private bool m_Await = true;

        protected override string GetTitle(GameObject source)
        {
            string await = this.m_Await ? " and wait" : string.Empty;
            return $"Run {this.m_Event}{await}";
        }

        protected override async Awaitable Run(Args args)
        {
            Event instance = this.m_Event.Get<Event>(args);
            if (instance == null) return;

            GameObject source = this.m_Source.Get(args);
            GameObject target = this.m_Target.Get(args);

            using Args eventArgs = Args.Get(source, target);
            Awaitable awaitable = instance.Schedule(eventArgs);

            if (this.m_Await)
            {
                await awaitable;
            }
            else
            {
                awaitable.Fire();
            }
        }
    }
}
Visual Script logoVisual Script © Catsoft Works 2026. All rights reserved.