Types of script

BeginnerProgrammer

There are three main types of script in Xenko: 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:

  1. public class StartUpScriptExample : StartupScript
  2. {
  3. public override void Start()
  4. {
  5. // Do some stuff during initialization
  6. }
  7. }

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:
  1. public class SampleSyncScript : SyncScript
  2. {
  3. public override void Update()
  4. {
  5. // Performs the update on the entity — this code is executed every frame
  6. }
  7. }

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:

  1. public class SampleAsyncScript : AsyncScript
  2. {
  3. public override async Task Execute()
  4. {
  5. // The initialization code should come here, if necessary
  6. while (Game.IsRunning) // loop until the game ends (optional depending on the script)
  7. {
  8. await MyEvent;
  9. // Do some stuff
  10. await Script.NextFrame(); // wait for the next frame (optional depending on the script)
  11. }
  12. }
  13. }

See also