# SetPositions

> Set the positions of all vertices in the line.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## SetPositions(Vector3\[])

Set the positions of all vertices in the line.

```csharp
public void SetPositions(Vector3[] positions)
```

### Parameters

**** (\[Vector3\[]]\(/engine/6000.6/script-reference/unityengine/vector3)): The array of positions to set.

### Remarks

This method is preferred to [LineRenderer.SetPosition](/engine/6000.6/script-reference/unityengine/linerenderer/setposition.md) when setting all positions, as it is more efficient to set all positions using a single command than to set each position individually.  Note that [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md) must be called before [LineRenderer.SetPositions](/engine/6000.6/script-reference/unityengine/linerenderer/setpositions.md). Also [LineRenderer.SetPositions](/engine/6000.6/script-reference/unityengine/linerenderer/setpositions.md) ignores points with indices beyond [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md).

Additional Resources: [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md) property, [LineRenderer.SetPosition](/engine/6000.6/script-reference/unityengine/linerenderer/setposition.md) function.

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // Creates a line renderer that follows a Sin() function
    // and animates it.

    public Color c1 = Color.yellow;
    public Color c2 = Color.red;
    public int lengthOfLineRenderer = 20;

    LineRenderer lineRenderer;

    void Start()
    {
        lineRenderer = gameObject.AddComponent<LineRenderer>();
        lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
        lineRenderer.widthMultiplier = 0.2f;
        lineRenderer.positionCount = lengthOfLineRenderer;

        // A simple 2 color gradient with a fixed alpha of 1.0f.
        float alpha = 1.0f;
        Gradient gradient = new Gradient();
        gradient.SetKeys(
            new GradientColorKey[] { new GradientColorKey(c1, 0.0f), new GradientColorKey(c2, 1.0f) },
            new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) }
        );
        lineRenderer.colorGradient = gradient;
    }

    void Update()
    {
        LineRenderer lineRenderer = GetComponent<LineRenderer>();
        var points = new Vector3[lengthOfLineRenderer];
        var t = Time.time;
        for (int i = 0; i < lengthOfLineRenderer; i++)
        {
            points[i] = new Vector3(i * 0.5f, Mathf.Sin(i + t), 0.0f);
        }
        lineRenderer.SetPositions(points);
    }
}
```

## SetPositions(NativeArray\<Vector3>)

Set the positions of all vertices in the line.

```csharp
public void SetPositions(NativeArray<Vector3> positions)
```

### Parameters

**** (\[NativeArray\<Vector3>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): The array of positions to set.

### Remarks

This method is preferred to [LineRenderer.SetPosition](/engine/6000.6/script-reference/unityengine/linerenderer/setposition.md) when setting all positions, as it is more efficient to set all positions using a single command than to set each position individually.  Note that [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md) must be called before [LineRenderer.SetPositions](/engine/6000.6/script-reference/unityengine/linerenderer/setpositions.md). Also [LineRenderer.SetPositions](/engine/6000.6/script-reference/unityengine/linerenderer/setpositions.md) ignores points with indices beyond [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md).

Additional Resources: [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md) property, [LineRenderer.SetPosition](/engine/6000.6/script-reference/unityengine/linerenderer/setposition.md) function.

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // Creates a line renderer that follows a Sin() function
    // and animates it.

    public Color c1 = Color.yellow;
    public Color c2 = Color.red;
    public int lengthOfLineRenderer = 20;

    LineRenderer lineRenderer;

    void Start()
    {
        lineRenderer = gameObject.AddComponent<LineRenderer>();
        lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
        lineRenderer.widthMultiplier = 0.2f;
        lineRenderer.positionCount = lengthOfLineRenderer;

        // A simple 2 color gradient with a fixed alpha of 1.0f.
        float alpha = 1.0f;
        Gradient gradient = new Gradient();
        gradient.SetKeys(
            new GradientColorKey[] { new GradientColorKey(c1, 0.0f), new GradientColorKey(c2, 1.0f) },
            new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) }
        );
        lineRenderer.colorGradient = gradient;
    }

    void Update()
    {
        LineRenderer lineRenderer = GetComponent<LineRenderer>();
        var points = new Vector3[lengthOfLineRenderer];
        var t = Time.time;
        for (int i = 0; i < lengthOfLineRenderer; i++)
        {
            points[i] = new Vector3(i * 0.5f, Mathf.Sin(i + t), 0.0f);
        }
        lineRenderer.SetPositions(points);
    }
}
```

## SetPositions(NativeSlice\<Vector3>)

Set the positions of all vertices in the line.

```csharp
public void SetPositions(NativeSlice<Vector3> positions)
```

### Parameters

**** (\[NativeSlice\<Vector3>]\(/engine/6000.6/script-reference/unity/collections/nativeslice1)): The array of positions to set.

### Remarks

This method is preferred to [LineRenderer.SetPosition](/engine/6000.6/script-reference/unityengine/linerenderer/setposition.md) when setting all positions, as it is more efficient to set all positions using a single command than to set each position individually.  Note that [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md) must be called before [LineRenderer.SetPositions](/engine/6000.6/script-reference/unityengine/linerenderer/setpositions.md). Also [LineRenderer.SetPositions](/engine/6000.6/script-reference/unityengine/linerenderer/setpositions.md) ignores points with indices beyond [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md).

Additional Resources: [LineRenderer.positionCount](/engine/6000.6/script-reference/unityengine/linerenderer/positioncount.md) property, [LineRenderer.SetPosition](/engine/6000.6/script-reference/unityengine/linerenderer/setposition.md) function.

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    // Creates a line renderer that follows a Sin() function
    // and animates it.

    public Color c1 = Color.yellow;
    public Color c2 = Color.red;
    public int lengthOfLineRenderer = 20;

    LineRenderer lineRenderer;

    void Start()
    {
        lineRenderer = gameObject.AddComponent<LineRenderer>();
        lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
        lineRenderer.widthMultiplier = 0.2f;
        lineRenderer.positionCount = lengthOfLineRenderer;

        // A simple 2 color gradient with a fixed alpha of 1.0f.
        float alpha = 1.0f;
        Gradient gradient = new Gradient();
        gradient.SetKeys(
            new GradientColorKey[] { new GradientColorKey(c1, 0.0f), new GradientColorKey(c2, 1.0f) },
            new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) }
        );
        lineRenderer.colorGradient = gradient;
    }

    void Update()
    {
        LineRenderer lineRenderer = GetComponent<LineRenderer>();
        var points = new Vector3[lengthOfLineRenderer];
        var t = Time.time;
        for (int i = 0; i < lengthOfLineRenderer; i++)
        {
            points[i] = new Vector3(i * 0.5f, Mathf.Sin(i + t), 0.0f);
        }
        lineRenderer.SetPositions(points);
    }
}
```
