本文轉(zhuǎn)自:http://blog.csdn.net/feng888668/article/details/38706099
很多ARPG游戲泼疑,由于劇情需要,都會有大量的游戲事件辕录,如果每個事件都要用程序?qū)懀切屎统鲥e率都會高很多梢卸,所以呢走诞,做一款事件節(jié)點編輯器還是必須的,但是在Unity3D里蛤高,要怎么做節(jié)點編輯器呢蚣旱?我大概找了幾天資料,研究出一點點關(guān)于節(jié)點編輯器的效果戴陡,現(xiàn)在給大家分享一下吧塞绿。
最終實現(xiàn)的效果如下圖,感覺還不錯吧!
需要掌握的知識點:
1 如何畫曲線
很多人會問恤批,綠色的那條曲線是怎么畫出來的异吻,其實也是unity幫我們寫好了,只是一直都沒找到這種相關(guān)的API喜庞,google翻了好久才找到诀浪。
這個API函數(shù)是:
Handles.DrawBezier (Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, Color color, Texture2D texture, float width)
startPosition:起點坐標(biāo)endPosition:終點坐標(biāo)startTangent:起點的正切值endTangent:終點的正切值color:線條顏色texture:貼圖width:線條寬度
2 如何創(chuàng)建可拖動的窗口
我們可以利用unity自帶的API GUI.Window來創(chuàng)建窗口,事例代碼如下
using UnityEngine;
using UnityEditor;
public class NodeEditor : EditorWindow {
//窗口的矩形
Rect windowRect = new Rect(50,50,150,100);
//窗口的ID
int windownID = 0;
[MenuItem("Window/NodeEditor")]
static void ShowEditor() {
NodeEditor editor = EditorWindow.GetWindow<NodeEditor>();
}
void OnGUI() {
//繪畫窗口
windowRect = GUI.Window(windownID,windowRect,DrawNodeWindow,"Demo Window");
}
//繪畫窗口函數(shù)</span><span style="font-weight: normal;">
void DrawNodeWindow(int id) {
}
}
最終你會看到這個窗口效果
3 如何在窗口里面添加一個按鈕延都?并且窗口可以拖動呢雷猪?添加按鈕并且拖動,其實很簡單晰房,只要在DrawNodeWindow函數(shù)里面寫上你需要的GUI容器求摇。
//繪畫窗口函數(shù)
void DrawNodeWindow(int id) {
//創(chuàng)建一個GUI Button</span>
Debug.Log("Clikc Link Button");
}
//設(shè)置改窗口可以拖動</span>
GUI.DragWindow();
}
這個時候,運行這個Editor殊者,你會發(fā)現(xiàn)出錯了月帝,究竟是怎么回事呢?原來是我們沒有將窗口和窗口元素合成一個組幽污,那我們修改一下代碼,如下:
using UnityEngine;
using UnityEditor;
public class NodeEditor : EditorWindow {
//窗口的矩形
Rect windowRect = new Rect(50,50,150,100);
//窗口的ID
int windownID = 0;
static void ShowEditor() {
NodeEditor editor = EditorWindow.GetWindow<NodeEditor>();
}
void OnGUI() {
BeginWindows();
//繪畫窗口
windowRect = GUI.Window(windownID,windowRect,DrawNodeWindow,"Demo Window");
EndWindows();
}
//繪畫窗口函數(shù)
void DrawNodeWindow(int id) {
//創(chuàng)建一個GUI Button
if (GUILayout.Button("Link")) {
Debug.Log("Clikc Link Button");</span></span>
}
//設(shè)置改窗口可以拖動
GUI.DragWindow();
}
}
再次運行Editor簿姨,效果就出來了今天就先發(fā)到這里距误,要忙工作先,等下再發(fā)下一編扁位,敬請期待
相關(guān)API說明連接
1 BeginWindos()和EndWindows()
2 GUI.Window()
**3 Handles.DrawBezier() **
4 GUI.DragWindow();