うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】LineRenderer.SetPositions の注意

LineRenderer.SetPositions は Vector3 の配列を渡すことで、Line の座標を一括でセットできるメソッドです

    /// <summary>
    ///   <para>Set the positions of all vertices in the line.</para>
    /// </summary>
    /// <param name="positions">The array of positions to set.</param>
    public extern void SetPositions([NotNull("ArgumentNullException")] Vector3[] positions);

しかしながら、LineRenderer.positionCount の値が渡した配列の数より小さい場合は、positionCount 分だけしか座標をセットすることができません

そのため以下のようにしたとしても、positionCount が 2 ならば 2 しか反映されません

_lineRenderer.SetPositions(new []
{
    Vector3.one,
    Vector3.one,
    Vector3.one,
});

f:id:hacchi_man:20211122230931p:plain

そのため、予め positionCount を合わせてから SetPositions を呼び出す必要があります

var positions = new[]
{
    Vector3.one,
    Vector3.one,
    Vector3.one,
};
_lineRenderer.positionCount = positions.Length;
_lineRenderer.SetPositions(positions);