Stride

OPEN / CLOSE
  • Features
  • Blog
  • Documentation
  • Community
(icon) Download

  • Discord
  • Facebook
  • Twitter
  • YouTube

LANGUAGE

OPEN / CLOSE
  • English
  • 日本語
    Show / Hide Table of Contents

    Types of script

    Beginner Programmer

    There are three main types of script in Stride: startup scripts, synchronous scripts, and asynchronous scripts.

    When you write your script, inherit from the type of script with the behavior that best fits your needs.

    Startup scripts

    Startup scripts only run when they are added or removed at runtime. They're mostly used to initialize game elements (eg spawning characters) and destroy them when the scene is unloaded. They have a Start method for initialization and a Cancel method. You can override either method if you need to.

    Example:

    public class StartUpScriptExample : StartupScript
    {
        public override void Start()
        {
            // Do some stuff during initialization
        }
    }
    

    Synchronous scripts

    Synchronous scripts are initialized, then updated every frame, and finally canceled (when the script is removed).

    • The initialization code, if any, goes in the Start method.
    • The code performing the update goes in the Update method.
    • The code performing the cancellation goes in the Cancel method.

    The following script performs updates every frame, no matter what:

    public class SampleSyncScript : SyncScript
    {        
        public override void Update()
        {
            // Performs the update on the entity — this code is executed every frame
        }
    }
    

    Asynchronous scripts

    Asynchronous scripts are initialized only once, then canceled when removed from the scene.

    • Asynchronous code goes in the Execute function.

    • Code performing the cancellation goes in the Cancel method.

    The following script performs actions that depend on events and triggers:

    public class SampleAsyncScript : AsyncScript
    {        
        public override async Task Execute() 
        {
            // The initialization code should come here, if necessary
    
            while (Game.IsRunning) // loop until the game ends (optional depending on the script)
            {
                await MyEvent;
    
                // Do some stuff
    
                await Script.NextFrame(); // wait for the next frame (optional depending on the script)
            }
        }
    }
    

    See also

    • Create a script
    • Use a script
    • Public properties and fields
    • Scheduling and priorities
    • Events
    • Debugging
    • Preprocessor variables
    • Improve this Doc
    In This Article

    Back to top

    Copyright © 2019-2021 .NET Foundation and Contributors
    Supported by the .NET Foundation