Version: 2022.3
public void SetPositions (Vector3[] positions);
public void SetPositions (NativeArray<Vector3> positions);
public void SetPositions (NativeSlice<Vector3> positions);

参数

positions 要设置的位置的数组。

描述

设置线中所有顶点的位置。

在设置所有位置时,此方法优于 SetPosition,因为使用单个命令设置所有位置比单独设置每个位置更高效。请注意,必须在调用 SetPositions 之前调用 positionCount。另外,SetPositions 会忽略索引超出 positionCount 的点。

另请参阅:positionCount 属性、SetPosition 函数。

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); } }