Draw a line going through the list of points
.
Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
PolyLine that connects all the objects in the Scene View.
// Draw lines to the connected game objects that a script has. // if the target object doesnt have any game objects attached // then it draws a line from the Last checked object to 0,0,0
@CustomEditor (ConnectedPolyLine) class ConnectedPolyLineHandle extends Editor {
var positions : Vector3[];
function OnSceneGUI () { if(target.polyLineObjs.Length > 0) positions = new Vector3[target.polyLinesObjs.Length]; for(var i = 0; i < target.polyLineObjs.Length; i++) if(target.polyLineObjs[i]) positions[i] = target.polyLineObjs[i].transform.position; else positions[i] = Vector3.zero; Handles.DrawPolyLine(positions); } }
// Draw lines between selected GameObjects.
using UnityEditor; using UnityEngine; using System.Collections;
[CustomEditor(typeof(DrawPolyLineExample))] public class PolyLineDraw : Editor { private Vector3[] positions;
void OnSceneGUI() { DrawPolyLineExample connectedObjects = target as DrawPolyLineExample; if (connectedObjects.objs == null) { return; }
if (connectedObjects.objs.Length > 0) { positions = new Vector3[connectedObjects.objs.Length]; }
for (var i = 0; i < connectedObjects.objs.Length; i++) { if (connectedObjects.objs[i]) { positions[i] = connectedObjects.objs[i].transform.position; } else { positions[i] = Vector3.zero; } }
Handles.DrawPolyLine(positions); } }
And the script attached to this handle:
// ConnectedPolyLine.js
var polyLineObjs : GameObject[];
using UnityEngine;
public class DrawPolyLineExample : MonoBehaviour { public GameObject[] objs; }