有時候為了加快效率,不得不做一些方便的小工具,尤其是有那種改變體屬性,調整ui布局,或者調整字型,有選擇性的新增修改元件的時候,如果乙個兩個手動該沒問題,如果物件數量很多,而且只是做一些簡單的更改的時候,那還是推薦大家先做乙個工具,還能練練手。
時候會比如我們需要用鉸鏈把一串transform連起來,或者把一些物件整齊排列,也可以先做乙個工具。
如果需要乙個窗體來輸入設定資訊的話,官方文件給出了大體的結構
using unityengine;
using unityeditor;
using system.collections;
class
mywindow
:editorwindow
void ongui (
)}
我們也可是設定快捷鍵,比如下面的shift+alt+ctrl+c
//#shift &alt %ctrl
[menuitem
("mytools/setpos #%&c"
)]
然後,我們再ongui函式中,新增文字輸入框,按鈕等物件
這條語句可以把選中的gameobjcet賦值給targetobject變數
targetobject = selection.activegameobject;
//獲得選中物件
然後,再button的單擊事件中
if
(gui.
button
(new
rect
(125
,200,60
,30),
"重新排列"))
}"!!!");
}
用乙個遞迴來獲取所有符合條件的子物件,比如我的條件是,tag為box,而且有transform元件,當然沒有也可以通過**新增。
static
void
getchild
(transform tragetobject)
if(child.childcount >0)
}}
這個工具目前的功能是快速排列transform,當然,也完全可以做一些稍微複雜點的操作,根據情況更改**即可
完整**如下:
using unityeditor;
using unityengine;
using system.collections;
using system.collections.generic;
public
class
colorvalue
:editorwindow
static
string
xyzvalue =
newstring[6
];static
vector3 xyzstep=vector3.one;
static
vector3 startpos = vector3.zero;
static
gameobject targetobject;
static list childobject =
newlist
<
transform
>()
;static
void
getchild
(transform tragetobject)
if(child.childcount >0)
}}private
void
ongui()
}"!!!");
} gui.
label
(new
rect(62
,2,60
,20),
"x")
; gui.
label
(new
rect
(122,2
,60,20
),"y")
; gui.
label
(new
rect
(184,2
,60,20
),"z")
; gui.
label
(new
rect(2
,20,60
,20),
"startpos");
xyzvalue[0]
= gui.
textfield
(new
rect(62
,20,60
,20),xyzvalue[0]
);xyzvalue[1]
= gui.
textfield
(new
rect
(122,20
,60,20
), xyzvalue[1]
);xyzvalue[2]
= gui.
textfield
(new
rect
(184,20
,60,20
), xyzvalue[2]
);gui.
label
(new
rect(62
,39,60
,20),
"x")
; gui.
label
(new
rect
(122,39
,60,20
),"y")
; gui.
label
(new
rect
(184,39
,60,20
),"z")
; gui.
label
(new
rect(2
,59,60
,20),
"step");
xyzvalue[3]
= gui.
textfield
(new
rect(62
,59,60
,20), xyzvalue[3]
);xyzvalue[4]
= gui.
textfield
(new
rect
(122,59
,60,20
), xyzvalue[4]
);xyzvalue[5]
= gui.
textfield
(new
rect
(184,59
,60,20
), xyzvalue[5]
);}private
void
oninspectorupdate()
}
Unity編輯器拓展
該資料夾可以放在專案的任何資料夾下,可以有多個 editor 資料夾。編輯器擴充套件相關的指令碼都要放在該資料夾內,該資料夾中的指令碼只會對unity編輯器起作用。專案打包的時候,不會被打包到專案中。如果編輯器相關指令碼不放在該資料夾中,打包專案可能會出錯。如果非要有些編輯器相關指令碼不放在該資料夾...
Unity 自定義編輯器視窗 拓展編輯器功能
最近學習了unity自定義編輯器視窗,下面簡單總結,方便用到時回顧。新建乙個指令碼 using unityengine using system.collections using unityeditor 自定義的編輯器視窗 public class mywindow editorwindow vo...
認識Unity編輯器
儲存整個專案所有資源的載體。專案中無論是從外部匯入的包 package 資源 後面有詳細 講解 模型資源,音訊資源,還是自己建立的各種指令碼 材質等,都需要在本檢視中儲存 編輯與展現出來。scene 場景檢視 視覺化展現與編輯當前場景中所有的遊戲物件。本檢視與上面層級檢視的區別是 場景檢視是視覺化遊...