Skip to content

Abstract Class: Script ​

Base for user scripts. Each subclass is registered as a script component and ScriptSystem drives the lifecycle, in Unity's order. A script is running while it's enabled and its entity is active in the hierarchy: OnAttach (Unity's Awake) → OnEnable → OnStart (before its first OnUpdate) → per fixed tick: OnUpdate, then OnLateUpdate after every Update-phase system → per rendered frame: OnFrameUpdate.

  • OnAttach runs once, the first time the entity is active — even if the script itself is disabled — and after a scene load / prefab spawn has finished, so saved field values and the entity's other components are there. An entity that starts inactive gets it on activation.
  • OnEnable / OnDisable run the moment it starts / stops running (SetActive, reparenting, enabled, a scene load or prefab spawn), and OnDisable runs before OnDestroy.
  • OnDestroy runs only for a script that got OnAttach. Only during a run (Play / a build), never in the editor's edit mode. Event hooks on the entity's own events: pointer (needs Interaction or Button; events bubble, so a parent's scripts hear its children's), OnClick (Button), OnInput* (InputField), OnToggle* / OnSliderChanged / OnPageChanged, OnParentChanged, OnParticleSystemStopped / OnParticleCollision (a particle system on the entity), and the 2D physics hooks — OnCollision2D / OnTrigger2D (a collider on the entity, or one of its Rigidbody2D's), OnJointBreak2D. Schedule* / OnGlobal helpers auto-bind this and auto-cancel on destroy.

Extends ​

Constructors ​

Constructor ​

ts
new Script(): Script;

enabled is a plain field on Component. On a script, switching it calls OnEnable / OnDisable right away (Unity), so it becomes an accessor on the instance. Defined here, after Component's field initializer; subclasses mustn't redeclare enabled.

Returns ​

Script

Overrides ​

Component.constructor

Properties ​

PropertyModifierTypeDefault valueDescriptionInherited from
dirtypublicbooleantrue-Component.dirty
enabledpublicbooleantrue-Component.enabled
entitypublicEntityundefinedSet by ScriptSystem on attach — read-only from user code.-
scenepublicSceneundefined--

Methods ​

EmitGlobal() ​

ts
EmitGlobal<T>(name, payload?): void;

Type Parameters ​

Type ParameterDefault type
Tunknown

Parameters ​

ParameterType
namestring
payload?T

Returns ​

void


OffAllGlobal() ​

ts
OffAllGlobal(): void;

Returns ​

void


OffGlobal() ​

ts
OffGlobal<T>(name, listener?): void;

Type Parameters ​

Type ParameterDefault type
Tunknown

Parameters ​

ParameterType
namestring
listener?(payload) => void

Returns ​

void


OnAttach() ​

ts
OnAttach(): void;

Returns ​

void


OnceGlobal() ​

ts
OnceGlobal<T>(name, listener): EventUnsubscribe;

Type Parameters ​

Type ParameterDefault type
Tunknown

Parameters ​

ParameterType
namestring
listener(this, payload) => void

Returns ​

EventUnsubscribe


OnClick() ​

ts
OnClick(_e): void;

A Button on this entity was clicked (honours interactable, unlike OnPointerTap).

Parameters ​

ParameterType
_ePointerEntityEvent

Returns ​

void


OnCollisionEnter2D() ​

ts
OnCollisionEnter2D(_collision): void;

2D physics, after the physics step (Unity's). Enter / Exit once per touching pair, Stay each step in between. Collisions get this side's Collision2D, triggers the other collider.

Parameters ​

ParameterType
_collisionCollision2D

Returns ​

void


OnCollisionExit2D() ​

ts
OnCollisionExit2D(_collision): void;

Parameters ​

ParameterType
_collisionCollision2D

Returns ​

void


OnCollisionStay2D() ​

ts
OnCollisionStay2D(_collision): void;

Parameters ​

ParameterType
_collisionCollision2D

Returns ​

void


OnDestroy() ​

ts
OnDestroy(): void;

Returns ​

void


OnDisable() ​

ts
OnDisable(): void;

Returns ​

void


OnEnable() ​

ts
OnEnable(): void;

Returns ​

void


OnFrameUpdate() ​

ts
OnFrameUpdate(_dt): void;

Once per rendered frame with that frame's time-scaled dt (variable) — visual smoothing on displays faster than the fixed step. Not called while the game is paused.

Parameters ​

ParameterType
_dtnumber

Returns ​

void


OnGlobal() ​

ts
OnGlobal<T>(name, listener): EventUnsubscribe;

Type Parameters ​

Type ParameterDefault type
Tunknown

Parameters ​

ParameterType
namestring
listener(this, payload) => void

Returns ​

EventUnsubscribe


OnInputChanged() ​

ts
OnInputChanged(_text): void;

Parameters ​

ParameterType
_textstring

Returns ​

void


OnInputEndEdit() ​

ts
OnInputEndEdit(_text): void;

Parameters ​

ParameterType
_textstring

Returns ​

void


OnInputFocus() ​

ts
OnInputFocus(_text): void;

An InputField on this entity: focused, edited (each change), submitted (Enter), edit ended.

Parameters ​

ParameterType
_textstring

Returns ​

void


OnInputSubmit() ​

ts
OnInputSubmit(_text): void;

Parameters ​

ParameterType
_textstring

Returns ​

void


OnJointBreak2D() ​

ts
OnJointBreak2D(_info): void;

A joint on this entity broke (its breakForce / breakTorque was exceeded) and was disabled.

Parameters ​

ParameterType
_infoJointBreak2D

Returns ​

void


OnLateUpdate() ​

ts
OnLateUpdate(_dt): void;

Same tick, after every Update-phase system (animation, tweens, scheduled callbacks, buttons) — follow cameras, react to animated values.

Parameters ​

ParameterType
_dtnumber

Returns ​

void


OnPageChanged() ​

ts
OnPageChanged(_page): void;

Parameters ​

ParameterType
_pagenumber

Returns ​

void


OnParentChanged() ​

ts
OnParentChanged(_oldParent, _newParent): void;

Parameters ​

ParameterType
_oldParentEntity | null
_newParentEntity | null

Returns ​

void


OnParticleCollision() ​

ts
OnParticleCollision(_hit): void;

One of this entity's particles hit a collision plane (sendCollisionEvents on); world position.

Parameters ​

ParameterType
_hit{ x: number; y: number; }
_hit.xnumber
_hit.ynumber

Returns ​

void


OnParticleSystemStopped() ​

ts
OnParticleSystemStopped(_system): void;

This entity's particle system stopped emitting and its last particle is gone.

Parameters ​

ParameterType
_systemParticleSystem2DComponent

Returns ​

void


OnPointerDown() ​

ts
OnPointerDown(_e): void;

Parameters ​

ParameterType
_ePointerEntityEvent

Returns ​

void


OnPointerEnter() ​

ts
OnPointerEnter(_e): void;

Parameters ​

ParameterType
_ePointerEntityEvent

Returns ​

void


OnPointerLeave() ​

ts
OnPointerLeave(_e): void;

Parameters ​

ParameterType
_ePointerEntityEvent

Returns ​

void


OnPointerMove() ​

ts
OnPointerMove(_e): void;

Parameters ​

ParameterType
_ePointerEntityEvent

Returns ​

void


OnPointerTap() ​

ts
OnPointerTap(_e): void;

Parameters ​

ParameterType
_ePointerEntityEvent

Returns ​

void


OnPointerUp() ​

ts
OnPointerUp(_e): void;

Parameters ​

ParameterType
_ePointerEntityEvent

Returns ​

void


OnSliderChanged() ​

ts
OnSliderChanged(_value): void;

Parameters ​

ParameterType
_valuenumber

Returns ​

void


OnStart() ​

ts
OnStart(): void;

Returns ​

void


OnToggleChanged() ​

ts
OnToggleChanged(_isOn): void;

UI controls on this entity: a Toggle flipped, a ToggleGroup's on toggle changed (null = none on), a Slider's value changed, a PageView settled on a page.

Parameters ​

ParameterType
_isOnboolean

Returns ​

void


OnToggleGroupChanged() ​

ts
OnToggleGroupChanged(_on): void;

Parameters ​

ParameterType
_onEntity | null

Returns ​

void


OnTransitionHidden() ​

ts
OnTransitionHidden(): void;

Returns ​

void


OnTransitionShown() ​

ts
OnTransitionShown(): void;

A UITransition on this entity finished showing / hiding.

Returns ​

void


OnTriggerEnter2D() ​

ts
OnTriggerEnter2D(_other): void;

Parameters ​

ParameterType
_otherCollider2DComponent

Returns ​

void


OnTriggerExit2D() ​

ts
OnTriggerExit2D(_other): void;

Parameters ​

ParameterType
_otherCollider2DComponent

Returns ​

void


OnTriggerStay2D() ​

ts
OnTriggerStay2D(_other): void;

Parameters ​

ParameterType
_otherCollider2DComponent

Returns ​

void


OnUpdate() ​

ts
OnUpdate(_dt): void;

Fixed step (Engine TPS, 60 by default), time-scaled — gameplay logic.

Parameters ​

ParameterType
_dtnumber

Returns ​

void


Schedule() ​

ts
Schedule(
   callback, 
   interval, 
   repeat?, 
   delay?
): number;

repeat = -1 for infinite. delay defaults to interval.

Parameters ​

ParameterTypeDefault value
callback(this) => voidundefined
intervalnumberundefined
repeatnumber-1
delay?numberundefined

Returns ​

number


ScheduleNextFrame() ​

ts
ScheduleNextFrame(callback): number;

Parameters ​

ParameterType
callback(this) => void

Returns ​

number


ScheduleOnce() ​

ts
ScheduleOnce(callback, delay): number;

Parameters ​

ParameterType
callback(this) => void
delaynumber

Returns ​

number


Unschedule() ​

ts
Unschedule(handle): void;

Parameters ​

ParameterType
handlenumber

Returns ​

void


UnscheduleAll() ​

ts
UnscheduleAll(): void;

Returns ​

void

© 2026 PlayAdGentic