获取LineRenderer的位置

时间:2017-03-06 21:29:29

标签: c# unity3d

我想知道是否有办法在线渲染器中获取节点的位置。在我正在进行的项目中,我有一个PseudoLine游戏对象,我有一个线渲染器。当我画一条线时,我克隆PseudoLine来创建一个新线。简单地使用:

Instantiate(gameObject);

我想要做的是使用预制件创建新的游戏对象,预制件上还有一个线条渲染器。我想将PseudoLine的位置复制到我的新游戏对象的线条渲染器中。像这样:

GameObject tempLine = Instantiate(line);
tempLine.GetComponent<LineRenderer>().SetPositions(transform.gameObject.GetComponent<LineRenderer>().Positions);

我检查了文档,但找不到任何有用的内置函数。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您可以使用LineRenderer.GetPositionsLineRenderer.GetPosition函数来获取LineRenderer的位置。

在这种情况下,建议您使用LineRenderer.GetPositions功能,因为您正在制作这些位置的完整副本,而LineRenderer.GetPositions将会很快。

要执行此操作,您需要创建新的Vector3数组,并且此数组的长度应为 要复制的旧LineRenderer的{​​{3}}值。在新版本的 Unity(5.6)中,此变量已重命名为LineRenderer.numPositions

GameObject oldLine = gameObject;
GameObject newLine = Instantiate(oldLine);

LineRenderer oldLineComponent = oldLine.GetComponent<LineRenderer>();

//Get old Position Length
Vector3[] newPos = new Vector3[oldLineComponent.positionCount];
//Get old Positions
oldLineComponent.GetPositions(newPos);

//Copy Old postion to the new LineRenderer
newLine.GetComponent<LineRenderer>().SetPositions(newPos);