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)
我检查了文档,找不到任何有用的内置函数。我该如何解决这个问题?
您可以使用LineRenderer.GetPositions
和LineRenderer.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)
归档时间: |
|
查看次数: |
8007 次 |
最近记录: |