获取 LineRenderer 的位置

Roo*_*kie 4 c# unity-game-engine

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

Instantiate(gameObject);
Run Code Online (Sandbox Code Playgroud)

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

GameObject tempLine = Instantiate(line);
tempLine.GetComponent<LineRenderer>().SetPositions(transform.gameObject.GetComponent<LineRenderer>().Positions);
Run Code Online (Sandbox Code Playgroud)

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

Pro*_*mer 7

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

建议LineRenderer.GetPositions在这种情况下使用该功能,因为您正在制作职位的完整副本,并且LineRenderer.GetPositions会很快完成。

为此,您需要创建新Vector3数组,并且该数组的长度应该是您要复制LineRenderer.numPositions的旧数组的 值LineRenderer。在新版本的Unity(5.6) 中,此变量已重命名为 LineRenderer.positionCount.


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);
Run Code Online (Sandbox Code Playgroud)