Instruction └── PlayerInstruction ← you are here ├── Instruction_Move / Jump / Attack / … ├── InstructionModifier └── InstructionSequence

Purpose

PlayerInstruction adds no new members — it exists as a type boundary that separates player actions from enemy actions. The instruction sheet, InstructionRunner, and all container classes work with PlayerInstruction references, not the broader Instruction type.

When to Extend

GoalExtend
A single standalone action (Move, Attack, custom ability)PlayerInstruction
An action that wraps and modifies one child instructionInstructionModifier
An action that holds and runs multiple child instructionsInstructionSequence
An enemy AI actionEnemyInstruction

Minimal Implementation

using System.Collections;

namespace LoopAdventure
{
    [TypeName("MyAction")]
    public class Instruction_MyAction : PlayerInstruction
    {
        public override string displayName => "My Action";

        public override void Execute() { }

        protected override IEnumerator Tick(ExecutionContext ctx)
        {
            // your logic here
            yield break;
        }
    }
}
💡
Full guide See Create an Instruction in the Manual for the complete workflow including prefab setup and palette registration.