No.1 给个官方参考链接MenuItem。
No.2 编写如下代码。
[MenuItem("GameObject/Dosomething", false, 11)]
static void DoSomething()
{
//dosomething
}
No.3 得到当前选择的对象
[MenuItem("GameObject/Dosomething", false, 11)]
static void DoSomething()
{
Transform []transforms = Selection.GetTransforms (SelectionMode.Assets);
Debug.Log (transforms.Length);
}
No.4 操作选择对象注意事项
Undo操作
- Undo.RecordObject(s)记录Object的状态
- Undo.AddComponent 要添加Component的时候使用,可以撤销掉新加的Component
- Undo.RegisterCreatedObjectUndo 新建Object的时候使用,可以撤销新建的物体
- Undo.DestroyObjectImmediate 要删除Object的时候使用,可以撤销删除操作
- Undo.SetTransformParent 修改Transform的Parent的时候使用,可以恢复层次结构
[MenuItem("GameObject/Dosomething", false, 11)]
static void DoSomething()
{
Transform []transforms = Selection.GetTransforms (SelectionMode.Assets);
GameObject tg;
if ((tg = GameObject.Find ("EditorParents")) == null) {
tg = new GameObject ("EditorParents");
Undo.RegisterCreatedObjectUndo (tg, "clone a tg");
}
for (int i = 0; i < transforms.Length; i++) {
Undo.SetTransformParent (transforms [i], tg.transform, "Trans");
}
}