1. 程式人生 > >Unity Scene場景自定義座標軸

Unity Scene場景自定義座標軸

多看看別人的程式碼是沒有壞處的,即使學不了人家的大框架,偶爾拾起一些小東西也是可以的。

最近扒了一下DoTween(宣告一下原始碼是自己反編譯的,只為學習),看見了如何在Scene場景中新增標註和座標軸,具體做法是,在你的指令碼Editor中,比如你重定義某個mono指令碼的Inspector顯示中,加入OnSceneGUI函式,使用Handles進行操作。

void OnSceneGUI()
    {
        if (_target.nodes.Count > 0)
        {
            //allow path adjustment undo:
            Undo.RecordObject(_target, "Adjust Path");

            //path begin and end labels:
            Handles.Label(_target.nodes[0], "'" + _target.name + "' Begin");
            Handles.Label(_target.nodes[_target.nodes.Count - 1], "'" + _target.name + "' End");

            //node handle display:
            for (int i = 0; i < _target.nodes.Count; i++)
            {
                _target.nodes[i] = Handles.PositionHandle(_target.nodes[i], Quaternion.identity);
                if (i != 0 || i != _target.nodes.Count - 1)
                    Handles.Label(_target.nodes[i], i.ToString());
            }
            if (GUI.changed)
            {
                EditorUtility.SetDirty(_target);
            }
        }
        
    }
程式碼很簡單,只是記錄方法而已,具體的效果:


給開始和結束點添加了一個label, 每個節點添加了一個座標軸和一個序號。其中藍色的線使用Gizmos畫的,可自行度娘。