# Vector4

> Representation of four-dimensional vectors.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule
* **Implements:** [IEquatable\<Vector4>](https://learn.microsoft.com/dotnet/api/system.iequatable-1), [IFormattable](https://learn.microsoft.com/dotnet/api/system.iformattable)

```csharp
public struct Vector4 : IEquatable<Vector4>, IFormattable
```

## Remarks

This structure is used in some places to represent four component vectors (e.g. mesh tangents, parameters for shaders). In the majority of other cases a [Vector3](/engine/6000.0/script-reference/unityengine/vector3.md) is used.

## Fields

| Value                                                         | Description                |
| ------------------------------------------------------------- | -------------------------- |
| [w](/engine/6000.0/script-reference/unityengine/vector4/w.md) | W component of the vector. |
| [x](/engine/6000.0/script-reference/unityengine/vector4/x.md) | X component of the vector. |
| [y](/engine/6000.0/script-reference/unityengine/vector4/y.md) | Y component of the vector. |
| [z](/engine/6000.0/script-reference/unityengine/vector4/z.md) | Z component of the vector. |

## Constructors

| Constructor                                                                                                                                                        | Description                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
| [Vector4(System.Single,System.Single)](/engine/6000.0/script-reference/unityengine/vector4/ctor.md#vector4\(float-float\))                                         | Creates a new vector with given x, y components and sets `z` and `w` to zero. |
| [Vector4(System.Single,System.Single,System.Single)](/engine/6000.0/script-reference/unityengine/vector4/ctor.md#vector4\(float-float-float\))                     | Creates a new vector with given x, y, z components and sets `w` to zero.      |
| [Vector4(System.Single,System.Single,System.Single,System.Single)](/engine/6000.0/script-reference/unityengine/vector4/ctor.md#vector4\(float-float-float-float\)) | Creates a new vector with given x, y, z, w components.                        |

## Properties

| Property                                                                            | Description                                                                 |
| ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [this\[\]](/engine/6000.0/script-reference/unityengine/vector4/item.md)             | Access the x, y, z, w components using \[0], \[1], \[2], \[3] respectively. |
| [magnitude](/engine/6000.0/script-reference/unityengine/vector4/magnitude.md)       | Returns the length of this vector (Read Only).                              |
| [normalized](/engine/6000.0/script-reference/unityengine/vector4/normalized.md)     | Creates a normalized copy of a vector based on the current vector.          |
| [sqrMagnitude](/engine/6000.0/script-reference/unityengine/vector4/sqrmagnitude.md) | Returns the squared length of this vector (Read Only).                      |

## Static Properties

| Property                                                                                    | Description                                                                                                                      |
| ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| [negativeInfinity](/engine/6000.0/script-reference/unityengine/vector4/negativeinfinity.md) | Shorthand for writing `Vector4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)`. |
| [one](/engine/6000.0/script-reference/unityengine/vector4/one.md)                           | Shorthand for writing `Vector4(1,1,1,1)`.                                                                                        |
| [positiveInfinity](/engine/6000.0/script-reference/unityengine/vector4/positiveinfinity.md) | Shorthand for writing `Vector4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)`. |
| [zero](/engine/6000.0/script-reference/unityengine/vector4/zero.md)                         | Shorthand for writing `Vector4(0,0,0,0)`.                                                                                        |

## Methods

| Method                                                                        | Description                                                                                                          |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [Equals](/engine/6000.0/script-reference/unityengine/vector4/equals.md)       | Compares two vectors to each other and evaluates if they are equal.                                                  |
| [Normalize](/engine/6000.0/script-reference/unityengine/vector4/normalize.md) | Makes this vector have a [Vector4.magnitude](/engine/6000.0/script-reference/unityengine/vector4/magnitude.md) of 1. |
| [Scale](/engine/6000.0/script-reference/unityengine/vector4/scale.md)         | Multiplies every component of this vector by the same component of `scale`.                                          |
| [Set](/engine/6000.0/script-reference/unityengine/vector4/set.md)             | Set x, y, z and w components of an existing Vector4.                                                                 |
| [ToString](/engine/6000.0/script-reference/unityengine/vector4/tostring.md)   | Formats this vector as a string.                                                                                     |

## Static Methods

| Method                                                                                | Description                                                                                                                                                                                                                                                                                              |
| ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Distance](/engine/6000.0/script-reference/unityengine/vector4/distance.md)           | Returns the distance between a and b.                                                                                                                                                                                                                                                                    |
| [Dot](/engine/6000.0/script-reference/unityengine/vector4/dot.md)                     | Calculates the dot product of two vectors.                                                                                                                                                                                                                                                               |
| [Lerp](/engine/6000.0/script-reference/unityengine/vector4/lerp.md)                   | Linearly interpolates between two vectors.                                                                                                                                                                                                                                                               |
| [LerpUnclamped](/engine/6000.0/script-reference/unityengine/vector4/lerpunclamped.md) | Linearly interpolates between two vectors.                                                                                                                                                                                                                                                               |
| [Max](/engine/6000.0/script-reference/unityengine/vector4/max.md)                     | Creates a vector that is made from the largest components of two vectors.                                                                                                                                                                                                                                |
| [Min](/engine/6000.0/script-reference/unityengine/vector4/min.md)                     | Creates a vector that is made from the smallest components of two vectors.                                                                                                                                                                                                                               |
| [MoveTowards](/engine/6000.0/script-reference/unityengine/vector4/movetowards.md)     | Moves a point `current` towards `target`.                                                                                                                                                                                                                                                                |
| [Normalize](/engine/6000.0/script-reference/unityengine/vector4/normalize.md)         | Returns a normalized vector based on the given vector. The normalized vector has a [Vector4.magnitude](/engine/6000.0/script-reference/unityengine/vector4/magnitude.md) of 1 and is in the same direction as the given vector. Returns a zero vector if the given vector is too small to be normalized. |
| [Project](/engine/6000.0/script-reference/unityengine/vector4/project.md)             | Projects a vector onto another vector.                                                                                                                                                                                                                                                                   |
| [Scale](/engine/6000.0/script-reference/unityengine/vector4/scale.md)                 | Multiplies two vectors component-wise.                                                                                                                                                                                                                                                                   |

## Operators

| Operator                                                                            | Description                                                                                                                                          |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [operator +](/engine/6000.0/script-reference/unityengine/vector4/op-addition.md)    | Adds two vectors.                                                                                                                                    |
| [operator /](/engine/6000.0/script-reference/unityengine/vector4/op-division.md)    | Divides a vector by a number.                                                                                                                        |
| [operator ==](/engine/6000.0/script-reference/unityengine/vector4/op-equality.md)   | Returns true if two vectors are approximately equal.                                                                                                 |
| [Vector4](/engine/6000.0/script-reference/unityengine/vector4/op-implicit.md)       | Converts a [Vector2](/engine/6000.0/script-reference/unityengine/vector2.md) to a Vector4.                                                           |
| [Vector2](/engine/6000.0/script-reference/unityengine/vector4/op-implicit.md)       | Converts a [Vector4](/engine/6000.0/script-reference/unityengine/vector4.md) to a [Vector2](/engine/6000.0/script-reference/unityengine/vector2.md). |
| [Vector3](/engine/6000.0/script-reference/unityengine/vector4/op-implicit.md)       | Converts a Vector4 to a [Vector3](/engine/6000.0/script-reference/unityengine/vector3.md).                                                           |
| [operator \*](/engine/6000.0/script-reference/unityengine/vector4/op-multiply.md)   | Multiplies a number by a vector.                                                                                                                     |
| [operator -](/engine/6000.0/script-reference/unityengine/vector4/op-subtraction.md) | Subtracts one vector from another.                                                                                                                   |
