# Value types

Every Signal has a type, and its field only offers sources that produce that type. A field asking for a number doesn't offer you a color, so you can choose among sources compatible with the operation.

## The types

Choose a type according to the value the operation needs:

| Type | Holds | Typical use |
| :--- | :--- | :--- |
| **Number** | A floating-point value | Amounts, distances, speeds, timers, counters |
| **String** | Text | Names, tags, messages, identifiers |
| **Bool** | `true` or `false` | Flags and switches |
| **Vector2** | Two components | 2D positions, screen coordinates, sizes |
| **Vector3** | Three components | World positions, directions, scales |
| **Quaternion** | A rotation | Orientations |
| **Color** | An RGBA color | Tinting, fading, highlighting |
| **Game Object** | A scene object | Selecting objects to read or change. See [Game Objects](game-objects.md) |
| **Sprite** | A sprite asset | 2D art and UI images |
| **Texture** | A texture asset | Materials and raw images |
| **Material** | A material asset | Swapping the look of a renderer |
| **Animation Clip** | An animation asset | Playing animations |
| **Audio Resource** | An audio asset | Playing sound |
| **Scriptable Object** | A project asset | Data assets, including your own |
| **Scene** | A scene | Loading and unloading. See [Scenes](../scenes.md) |
| **Variable** | A variable container | Pointing at a variable rather than one of its values |
| **Collection** | Many values | Iterating. See [Collections](collections.md) |

An **Integer** variant rounds Number values for fields that need whole numbers, such as indices, counts, and profile numbers.

## Number

Number has the largest Signal catalog because it represents measurements, calculations, input axes, time, and counts:

| Category | Includes |
| :--- | :--- |
| **Maths** | Add, subtract, multiply, divide, modulus, powers, roots, rounding, clamping, remapping, and interpolation. |
| **Trigonometry** | Trigonometric functions, angle conversion, vector angles, and delta angles. |
| **Random** | A value in a range or a random integer. |
| **Vector components** | The X, Y, or Z component of a Vector2 or Vector3. |
| **Color channels** | RGBA or hue, saturation, and value. |
| **Distance** | Distance between two objects, Vector2 values, or Vector3 values. |
| **Time** | Delta time, fixed delta time, unscaled variants, elapsed time, frame count, and time scale. |
| **Screen** | Width, height, dots per inch (DPI), and aspect ratio. |
| **Text** | Length, index, word count, occurrence count, or a parsed number. |
| **Collections** | Count, sum, average, minimum, maximum, or a random entry. |
| **Input** | Mouse, scroll, stick, trigger, touch, gamepad, and last-input values. |
| **Constants** | `π` and positive or negative infinity. |

!!! tip "Nested Signals combine calculations"
    You can combine existing Signals when one source doesn't provide the calculation you need. For *half the distance to the player*, divide a distance Signal by `2`. For *a random point along a line*, use a random range as an interpolation's blend factor.

## Vector2 and Vector3

Vector Signals can construct a value from individual numbers or read a transform's position, rotation, scale, or direction. Other sources normalize vectors, calculate cross and dot products, rotate by a quaternion, interpolate, or convert between screen and world space.

## Quaternion

Quaternion Signals supply rotations from identity, Euler angles, a transform, or a look direction. You can also interpolate between rotations, combine them, or rotate toward a target.

## Color

Color Signals can read a constant or a renderer or UI element's current color. You can interpolate between two colors, construct a color from its channels, or use hue, saturation, and value.

## String

String sources include typed constants, variables, and a game object's name or tag. Operations cover concatenation, joining, substring extraction, case conversion, trimming, replacement, sanitization, and number formatting. Other sources generate a GUID or read the date a save profile was written.

## Asset types

For **Sprite**, **Texture**, **Material**, **Animation Clip**, **Audio Resource**, and **Scriptable Object**, you can choose a direct asset reference, a variable, or a component that holds the asset.

Use **Scriptable Object** for your own data assets, such as a weapon definition, spell, or difficulty preset. Designers can select those assets through the same dropdown.

## Variable

A **Variable** Signal resolves to a container: a **Local Variable** component or a **Global Variable** asset.

Use it to choose which variable to operate on, rather than which value to read. Instructions that clear a variable or rename an entry take one.

## Where to go next

- **[Game Object Signals](game-objects.md)** — resolve scene objects through context, hierarchy, and lookups.
- **[Collections](collections.md)** — produce and transform multiple values at once.
- **[Signals reference](../reference/signals/index.md)** — inspect every Signal generated from the source.
