lineSegments | 線分の開始と終了を示す 1 組になった点の配列 |
含まれる線分を描画します。
"Draw multiple lines in Scene view.".
The following example uses DrawLines to draw a line between GameObjects defined in a list.
この例を使用するには、以下のスクリプトを Assets/Editor フォルダーに保存します。
using UnityEngine; using UnityEditor;
[CustomEditor(typeof(DrawLines))] public class DrawLinesEditor : Editor { void OnSceneGUI() { DrawLines t = target as DrawLines;
if (t == null || t.GameObjects == null) return;
Vector3[] lineSegments = new Vector3[t.GameObjects.Length * 2]; int pointIndex = 0;
for (int i = 0; i < t.GameObjects.Length - 1; i++) { if (t.GameObjects[i] != null && t.GameObjects[i + 1] != null) { lineSegments[pointIndex++] = t.GameObjects[i].transform.position; lineSegments[pointIndex++] = t.GameObjects[i + 1].transform.position; } }
Handles.DrawLines(lineSegments); } }
このスクリプトを線の始点としたいアンカーオブジェクトにアタッチします。線の終点としたいゲームオブジェクトをスクリプトのインスペクターの配列にドラッグアンドドロップし、点線の間の差をそれぞれ調整します。
using UnityEngine;
[ExecuteInEditMode] public class DrawLines : MonoBehaviour { public GameObject[] GameObjects; }
points | ポイントのリスト |
segmentIndices | 線分の開始と終了を示す 1 組になった点のインデックスの配列 |
リストにあるインデックス化された線分を描画します。
The following example uses DrawDottedLines to draw a line between objects defined in a list. To use this example, save the following script into the Assets/Editor folder:
using UnityEngine; using UnityEditor;
[CustomEditor(typeof(DrawLinesUsingPoints))] public class DrawLinesUsingPointsEditor : Editor { void OnSceneGUI() { DrawLinesUsingPoints t = target as DrawLinesUsingPoints;
if (t == null || t.GameObjects == null) return;
Vector3[] points = new Vector3[t.GameObjects.Length]; int[] segmentIndices = new int[t.GameObjects.Length * 2]; int pointsIndex = 0;
for (int i = 0; i < t.GameObjects.Length; i++) { if (t.GameObjects[i] != null) points[pointsIndex++] = t.GameObjects[i].transform.position; }
for (int i = 0; i < pointsIndex - 1; i++) { int segmentIndex = i * 2;
segmentIndices[segmentIndex] = i; segmentIndices[segmentIndex + 1] = i + 1; }
Handles.DrawLines(points, segmentIndices); } }
このスクリプトを線の始点としたいアンカーオブジェクトにアタッチします。線の終点としたいゲームオブジェクトをスクリプトのインスペクターの配列にドラッグアンドドロップし、点線の間の差をそれぞれ調整します。
using UnityEngine;
[ExecuteInEditMode] public class DrawLinesUsingPoints : MonoBehaviour { public GameObject[] GameObjects; }