2017-02-24 11 views
0

Debug.DrawLineを使用してオブジェクト間の線を描画できます。 しかし、私は各ウェイポイントの上/上に数字の描画/書き込みをします。 シーンビューでは、各ウェイポイントで1,2,3,4 ...が表示されます。Handles.Labelを使用してシーンビューでテキストを描画する方法

私はDrawGizmoを追加しようとしましたが、ありませんアップデート機能でそれを使用する方法がわからそして私はギズモと、いくつかの警告を取得しています:

最初の警告、それは単純化するために、各UnityEditorを削除することです。 ので、 UnityEditorですべての場所を削除しました。それから私はよ警告を受ける:

重大度コード説明プロジェクトファイルの行抑制状態 警告CS0618 'GizmoType.SelectedOrChild' は廃止されました: 'の代わりに使用 InSelectionHierarchy(UnityUpgradable) - > InSelectionHierarchy'

このギズモをどのように使うかはわかりません。

void Update() 
    { 
     if (MyCommands.walkbetweenwaypoints == true) 
     { 
      WayPointsAI(); 
     } 
     // create lines between each checkpoint // 
     for (int i = 0; i < waypoints.Length - 1; i++) 
     { 
      Debug.DrawLine(waypoints[i].transform.position, waypoints[i + 1].transform.position, Color.blue); 

     } 

     // create line between original transform start position 
     // and the current transform position // 
     Debug.DrawLine(originalPosition, transform.position, Color.red); 

     // create a line between current transform position and the next waypoint target 
     // each time reached a waypoint. 
     Debug.DrawLine(target.transform.position, myTransform.position, Color.green); 
    } 

    [UnityEditor.DrawGizmo(GizmoType.SelectedOrChild | UnityEditor.GizmoType.NotSelected)] 
    static void DrawGameObjectName(Transform transform, UnityEditor.GizmoType gizmoType) 
    { 
     Handles.Label(transform.position, transform.gameObject.name); 
    } 

答えて

0

Handles.Labelを使用するのは難しいです。

スクリプト名はWayPointScriptとしましょう。以下は、それがどのように見えるかです:それの上に[ExecuteInEditMode]に気づい

[ExecuteInEditMode] 
public class WayPointScript : MonoBehaviour 
{ 
    public GameObject[] waypoints; 

    void Update() 
    { 
     if (MyCommands.walkbetweenwaypoints == true) 
     { 
      WayPointsAI(); 
     } 
     // create lines between each checkpoint // 
     for (int i = 0; i < waypoints.Length - 1; i++) 
     { 
      Debug.DrawLine(waypoints[i].transform.position, waypoints[i + 1].transform.position, Color.blue); 

     } 

     // create line between original transform start position 
     // and the current transform position // 
     Debug.DrawLine(originalPosition, transform.position, Color.red); 

     // create a line between current transform position and the next waypoint target 
     // each time reached a waypoint. 
     Debug.DrawLine(target.transform.position, myTransform.position, Color.green); 
    } 
} 

?そのでなければなりません。

ここで、TextHandles.Labelで描画するには、次のコードを使用します。

[CustomEditor(typeof(WayPointScript))] 
public class TextDrawer : Editor 
{ 

    void OnSceneGUI() 
    { 

     Debug.Log("Running"); 
     WayPointScript t = target as WayPointScript; 

     //Create Text on each checkpoint // 
     for (int i = 0; i < t.waypoints.Length; i++) 
     { 
      UnityEditor.Handles.Label(t.waypoints[i].transform.position, (i + 1).ToString()); 
     } 
    } 
} 

テキストを上部に表示しますか?変数t.waypoints[i].transform.positionのy軸にオフセットを追加します。

関連する問題