如何从脚本中设置LineRenderer的大小?

时间:2017-04-20 23:55:09

标签: c# unity3d

你好:)我的代码以下工作正常。如果手动添加游戏对象,它可以创建线渲染器。我想知道的是如何动态设置我的点的大小。这是我正在谈论的样本pic。在检查员的底部,我可以设置我的点的大小,当然。我想要做的是如何编码大小,如例10,而不是通过检查器。

如何设置线条渲染器点的大小?

这是我的代码:

public class Example : MonoBehaviour {
    LineRenderer lineRenderer;
    public Transform[] points;
    private Vector3[] vP;
    int seg;



// Use this for initialization
void Start () {
    lineRenderer = GetComponent<LineRenderer>();
    Lines();
}

public void Lines() {
    seg = points.Length;
    vP = new Vector3[points.Length];
    for (int i = 0; i < points.Length; i++)
    {
        vP[i] = points[i].position;
    }
    for (int i = 0; i < seg; i++)
    {
        float t = i / (float)seg;
        lineRenderer.numPositions = vP.Length;
        lineRenderer.SetPositions(vP);
    }

}

}

1 个答案:

答案 0 :(得分:1)

LineRenderer.startWidthLineRenderer.endWidth变量用于设置LineRenderer的大小。

0.2f值似乎没问题。

public void Lines()
{
    lineRenderer.startWidth = 0.2f;
    lineRenderer.endWidth = 0.2f;

    seg = points.Length;
    vP = new Vector3[points.Length];
    for (int i = 0; i < points.Length; i++)
    {
        vP[i] = points[i].position;
    }
    for (int i = 0; i < seg; i++)
    {
        float t = i / (float)seg;
        lineRenderer.numPositions = vP.Length;
        lineRenderer.SetPositions(vP);
    }
}

您也可以使用LineRenderer.widthMultiplier变量,但这不是必需的。

修改

您只想从代码而不是编辑器设置points变量的大小。就这样做:

int size = 10;
points = new Transform[size];

然后遍历points变量并填充点的变换

for (int i = 0; i < points.Length; i++)
{
    points[i] = theGameObjectTransformToUse.transform;
}

如果你没有Transform来填充它,你可以创建虚拟游戏对象并使用它们的变换来填充它。

for (int i = 0; i < points.Length; i++)
{
    GameObject tempObj = new GameObject("dummy" + i);
    tempObj.transform.position = yourNewPostion;
    points[i] = tempObj.transform;
}

注意

lineRenderer.numPositions = vP.Length;应该在for循环之前和之前。在for循环中没有必要这样做。你只需要设置一次。