c# - 我怎样才能在运行时画线,而不仅仅是在场景中作为小玩意儿?
问题描述
在顶部我添加了:
public LineRenderer LineRenderer;
在开始:
void Start()
{
DrawTraffic();
}
这是小玩意儿方法:
void OnDrawGizmos()
{
for (int k0 = 0; k0 < transform.childCount; k0++)
{
Vector3 Pos = transform.GetChild(k0).transform.localPosition;
Gizmos.color = Color.green;
Gizmos.DrawWireSphere(Pos, MaxStartScatter);
Gizmos.DrawLine(transform.GetChild(k0).position, transform.GetChild(k0).position + transform.GetChild(k0).transform.TransformVector(Vector3.forward) * 300);
Gizmos.color = Color.yellow;
for (int k1 = 0; k1 < 10; k1++)
{
Gizmos.DrawWireSphere(Pos += transform.GetChild(k0).transform.TransformVector(Vector3.forward) * 30, MaxStartScatter);
}
}
}
这是我想在运行时显示的 DrawTraffic:
private void DrawTraffic()
{
// set the color of the line
LineRenderer.startColor = Color.red;
LineRenderer.endColor = Color.red;
// set width of the renderer
LineRenderer.startWidth = 0.3f;
LineRenderer.endWidth = 0.3f;
for (int k0 = 0; k0 < transform.childCount; k0++)
{
Vector3 Pos = transform.GetChild(k0).transform.localPosition;
LineRenderer.SetPosition(0, Pos);
}
}
但我不确定在 DRawTraffic 方法中下一步该做什么。如何像在小玩意中一样在所有位置之间画线?
我现在尝试了这个,但在线上出现了出站异常:
LineRenderer.SetPosition(2, transform.GetChild(k0).position + transform.GetChild(k0).transform.TransformVector(Vector3.forward) * 300);
这是我尝试过的:
private void DrawTraffic()
{
// set the color of the line
LineRenderer.startColor = Color.red;
LineRenderer.endColor = Color.red;
// set width of the renderer
LineRenderer.startWidth = 0.3f;
LineRenderer.endWidth = 0.3f;
for (int k0 = 0; k0 < transform.childCount; k0++)
{
Vector3 Pos = transform.GetChild(k0).transform.localPosition;
LineRenderer.SetPosition(0, Pos);
LineRenderer.SetPosition(1, transform.GetChild(k0).position);
LineRenderer.SetPosition(2, transform.GetChild(k0).position + transform.GetChild(k0).transform.TransformVector(Vector3.forward) * 300);
}
}
解决方案
您必须在调用之前设置 to 的值LineRenderer.positionCount
(transform.childCount
或您想要绘制的任何点数)LineRenderer.SetPosition
,这很可能是您得到越界异常的原因。
参考中有一个例子:https ://docs.unity3d.com/ScriptReference/LineRenderer-positionCount.html
推荐阅读
- angular - 角度异步功能仅在 onInit 上正确工作
- crystal-reports - 这里需要一个字符串
- c# - 是否可以在 ASP.NET Core 中更新会话?
- charts - 如何使特定的谷歌图表元素背景透明
- c - Why does malloc keep giving a "incompatible types" error when assigning memory even though both the pointer and the typecasting are of correct type
- javascript - 如何通过 Post 方法将数组发送到服务器并使其作为数组(不是对象)到达?
- javascript - 如何通过 JQuery 检查页面上是否正在运行任何 AJAX 请求?
- ruby-on-rails - PG冲突更改数据库中的属性名称
- java - Jenkins 工作区管理
- laravel - Digitalocean 和 github(权限被拒绝)